php两个多维数组差异

时间:2015-01-09 08:48:14

标签: php arrays compare

我正在处理两个多维数组的差异,下面是我的数组:

数组1:

Array
(
    [0] => Array
        (
            [F_CONTACT_ID] => 2
            [F_CONTACT_FNAME] => name2
            [F_CONTACT_NAME] => name22
        )

    [1] => Array
        (
            [F_CONTACT_ID] => 3
            [F_CONTACT_FNAME] => name3
            [F_CONTACT_NAME] => name33
        )

)

ARRAY2:

Array
(
    [0] => Array
        (
            [F_CONTACT_ID] => 2
            [F_CONTACT_FNAME] => name2
            [F_CONTACT_NAME] => name22
        )

    [1] => Array
        (
            [F_CONTACT_ID] => 3
            [F_CONTACT_FNAME] => name3
            [F_CONTACT_NAME] => name33
        )

    [2] => Array
        (
            [F_CONTACT_ID] => 5
            [F_CONTACT_FNAME] => name5
            [F_CONTACT_NAME] => name55
        )

)

我只想比较与F_CONTACT_ID' F_CONTACT_ID'在阵列中。

我的结果数组应该是:

结果:

Array
(
    [2] => Array
        (
            [F_CONTACT_ID] => 5
            [F_CONTACT_FNAME] => name5
            [F_CONTACT_NAME] => name55
        )
)

此外,如果一个数组为空:假设Array2为空。我的结果数组应该是:

Array
(
    [0] => Array
        (
            [F_CONTACT_ID] => 2
            [F_CONTACT_FNAME] => name2
            [F_CONTACT_NAME] => name22
        )

    [1] => Array
        (
            [F_CONTACT_ID] => 3
            [F_CONTACT_FNAME] => name3
            [F_CONTACT_NAME] => name33
        )

)

我尝试了不同的解决方案,但没有任何对我有用。我试图检索F_CONTACT_ID并存储在一维数组中进行比较但是花了很多时间。 请帮助我更好更快地解决问题。

3 个答案:

答案 0 :(得分:1)

你试过这个吗?

for($i=0;$i<count($array1);$i++) {
    $temp[$array1[$i]['F_CONTACT_ID']] = $array1[$i];
};

for($i=0;$i<count($array2);$i++) {
    if($temp[$array2[$i]['F_CONTACT_ID']]) {
        unset($temp[$array2[$i]['F_CONTACT_ID']]);
    } else {
        $temp[$array2[$i]['F_CONTACT_ID']] = $array2[$i];
    }
}

echo "<pre>";
print_r($temp);
echo "</pre>";

结果会是这样的:

Array
(
    [5] => Array
        (
            [F_CONTACT_ID] => 5
            [F_CONTACT_FNAME] => name5
            [F_CONTACT_NAME] => name55
        )

)

答案 1 :(得分:0)

您可以尝试使用函数 array-diff-key()函数,它可以帮助您使用键比较两个多维数组。

您可以访问此页面以获取更多信息:http://php.net/manual/en/function.array-diff-key.php

答案 2 :(得分:0)

这样的事情怎么样?

$array1;
$array2;

$array3;
foreach ($array1 as $ar1) {
    foreach ($array2 as $ar2) {
        if ($ar1['F_CONTACT_ID']==$ar2['F_CONTACT_ID']) {
            array_push($array3, $ar1);
        }
    }
}

它不是非常优化,最大化性能改变第二个foreach检查array_push是否已经附加(使用bool条件)