У меня есть два ассоциативных массива:
$indexedProducts =
[0] => Array
(
[id] => 6662
)
[1] => Array
(
[id] => 6656
)
[2] => Array
(
[id] => 6657
)
[3] => Array
(
[id] => 6527
)
[4] => Array
(
[id] => 6528
)
[5] => Array
(
[id] => 6529
)
а также $категорияПродукты =
[0] => Array
(
[id] => 6527
)
[1] => Array
(
[id] => 6528
)
[2] => Array
(
[id] => 6529
)
затем я запускаю эту команду:
$difference = array_diff($indexedProducts[0], $categoryProducts[0]);
результат я ожидаю отсюда представляет собой массив значений 6662,6656 и 6657:
[0] => Array
(
[id] => 6662
)
[1] => Array
(
[id] => 6656
)
[2] => Array
(
[id] => 6657
)
поскольку все они встречаются в первом массиве, а не во втором массиве.
Результат, который я получаю от этого
[id] => 6662
кажется, что он останавливается на первом не найденном индексе.
Где я ошибаюсь в этом?






Что вам действительно нужно для сравнения, так это столбец идентификатора в обоих мультимассивах:
array_diff(
array_column($indexedProducts, 'id'),
array_column($categoryProducts, 'id')
);
Array_diff работает только с плоскими массивами.
Используйте array_column, чтобы сделать массивы плоскими перед их сравнением.
var_dump(array_diff(array_column($indexedProducts, "id"), array_column($categoryProducts, "id")));
//[6662,6656,6657]