PHP-array_diff()缺少记录

时间:2019-06-12 10:50:16

标签: php arrays

我有两个关联数组:

$ 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

它似乎在找不到第一个索引处停止。

我在哪里出错?

2 个答案:

答案 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]

https://3v4l.org/5fsLE