mrusklon
@mrusklon
Не получается? Яростно гугли!

Как получить элементы одного массива, отсутствующие в другом?

Пытаюсь сравнить 2 массива, у которых ключи называются по-разному, а нужно сравнить их значения.
Проблема еще в том, что в первом массиве эти значения повторяются много раз.

Первый массив:

$arr= [ [ "user_id" => "100", 
               "Цена" => 100,
               "Количество" => 15 
             ],
             [ "user_id" => "100", 
               "Цена" => 60,
               "Количество" => 25,
             ],
             [ "user_id" => "100", 
               "Цена" => 180,
               "Количество" => 7 
             ]
           ];

Второй:

$arr2= [ [ "users_id" => "100", 
               "Цена" => 100,
               "Количество" => 15 
             ],
             [ "users_id" => "101", 
               "Цена" => 60,
               "Количество" => 25,
             ],
             [ "users_id" => "102", 
               "Цена" => 180,
               "Количество" => 7 
             ]
           ];

В arr1 user_id, а в arr2 users_id, а я хочу найти разницу и взять только данные из второго массива, чтобы получить такой результат:

$result = [
 [ "users_id" => "101", 
               "Цена" => 60,
               "Количество" => 25,
             ],
             [ "users_id" => "102", 
               "Цена" => 180,
               "Количество" => 7 
             ]
];

Я пытаюсь писать через функцию + 2 цикла foreach:

function array_diff_unic($array1, $array2) {
        $result=[];
        foreach($array1 as $key => $value) {
            foreach($array2 as $key2 => $value2) {
                if( $array1['user_id'] != $array2['users_id'] ) {
                    $result[$key] = $value2;
                }
            }
        }
        return $result;
    }

Но это не работает, кроме того, непонятно, как убрать дубли.
  • Вопрос задан
  • 122 просмотра
Решения вопроса 1
0xD34F
@0xD34F
$ids = array_unique(array_column($arr, 'user_id'));
$result = array_filter($arr2, fn($n) => !in_array($n['users_id'], $ids));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы