我有两个关联数组:
$ 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
)
和 $ categoryProducts =
[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
它似乎在找不到第一个索引处停止。
我在哪里出错?
答案 0 :(得分:3)
您真正需要区分的是两个多数组中的ID列:
array_diff(
array_column($indexedProducts, 'id'),
array_column($categoryProducts, 'id')
);
答案 1 :(得分:2)
Array_diff仅适用于平面数组。
使用array_column使阵列变平,然后再进行扩散。
var_dump(array_diff(array_column($indexedProducts, "id"), array_column($categoryProducts, "id")));
//[6662,6656,6657]