数组的区别


array difference

我需要得到这两个数组之间的差异,我已经尝试了array_diff($array1,$array2)没有成功,任何想法?

array1

Array
(
    [0] => Array
        (
            [status] => 61192106047320064
        )
    [1] => Array
        (
            [status] => 61185038284357632
        )
    [2] => Array
        (
            [status] => 61182890951720960
        )
)

array2

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

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

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

$ newstatus的每个元素将是一个数组,其中包含array1中不属于array2的'status'元素。

那么,$ newstatus应该是这样的:

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

根据array_diff

这个函数只检查n维数组的一个维度。当然你也可以使用array_diff($array1[0], $array2[0]);

因此你不能直接对这些数组的第二维进行差分。

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

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

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

和docs

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