数组差异

时间:2011-04-21 22:30:45

标签: php arrays

我需要区分这两个数组,我试过array_diff($array1,$array2)没有成功,不知道吗?

ARRAY1

Array
(
    [0] => Array
        (
            [status] => 61192106047320064
        )

    [1] => Array
        (
            [status] => 61185038284357632
        )

    [2] => Array
        (
            [status] => 61182890951720960
        )

)

数组2

Array
(
    [0] => Array
        (
            [status] => 61185038284357632
        )

    [1] => Array
        (
            [status] => 61182890951720960
        )

)

提前感谢。

3 个答案:

答案 0 :(得分:2)

根据array_diff

  

此函数仅检查n维数组的一维。当然,您可以使用array_diff($ array1 [0],$ array2 [0]);来检查更深的维度。

因此,您无法直接对这些数组的第二维进行区分。

相反,也许您可​​以使用array_map提取status值,另存为两个1维数组,然后array_diff。如果您有多个键,请使用for循环。

答案 1 :(得分:2)

也许我误解了,但是你不能为你的具体问题做这样的事吗?

$newStatuses = array();

foreach($array1 as $element1) {
    foreach($array2 as $element2) {
        if($element1['status'] == $element2['status']) {
            continue 2;
        }
    }

    $newStatuses[] = $element1;
}

$ newStatuses的每个元素都是一个数组,其array1中的'status'元素不在array2中。

所以,$ newStatuses就是这样:

Array
(
    [0] => Array
        (
            [status] => 61192106047320064
        )

)

答案 2 :(得分:-1)

看看这段代码,它是cakephp的一部分,但你可能能够适应/撕掉它

https://github.com/cakephp/cakephp/blob/master/cake/libs/set.php#L792

和文档

http://book.cakephp.org/view/1496/diff