1

我有两个数组都是二维的。我正在将电子表格行与数据库行进行比较。两个数组的数组键相同。

来自数据库获取的数组

$array1 = Array
(
[0] => Array
    (
        [uid] => 1
        [fname] => abc
        [lname] => deg
        [phone] => 123456789
    )
[1] => Array
    (
        [uid] => 2
        [fname] => jkl
        [lname] => xyz
        [phone] => 987654321
    )
[2] => Array
    (
        [uid] => 3
        [fname] => pqr
        [lname] => stu
        [phone] => 111111111
    )

从电子表格创建的数组

$array2 = Array
(
[0] => Array
    (
        [uid] => 1
        [fname] => abc
        [lname] => deg
        [phone] => 4444444
    )
[1] => Array
    (
        [uid] => 3
        [fname] => pqr
        [lname] => stu
        [phone] => 111111111
    )
[2] => Array
    (
        [uid] => 4
        [fname] => aaa
        [lname] => bbb
        [phone] => 9999999
    )

现在我只想要特定用户的那些不同的键和值。

例如:对于 uid=1,只有手机应该显示。对于 uid=2,应该显示整个数组。对于 uid=3,应显示无(空白数组)。

我使用了 array_diff() 并且效果很好。但问题是我的代码因此进行比较(与uid无关)。我希望将 array1 的 uid 与 array2 的 uid 进行比较。

4

1 回答 1

2

我会用 uid 重新索引数组,然后比较:

$new1 = array();
foreach ($array1 as $value){
    $new1[$value['uid']] = $value;
}
$new2 = array();
foreach ($array2 as $value){
    $new2[$value['uid']] = $value;
}
$diff = array();
foreach ($new1 as $key => $value){
    //compare $value with $new2[$key]
    if (isset($new2[$key])){
        $diff[$key] = array_diff($value, $new2[$key]);
    }
}
于 2013-06-25T08:27:58.443 回答