我有两个阵列都是二维的。我正在将电子表格行与数据库行进行比较。两个数组的数组键都相同。
来自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进行比较。
答案 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]);
}
}