比较数组,如果PHP中的两个数组中的特定键相同

时间:2013-06-25 08:12:04

标签: php arrays key compare

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

来自DB fetch的

数组

$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进行比较。

1 个答案:

答案 0 :(得分: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]);
    }
}