我需要帮助解决php array_diff
中的这个问题。任何人都可以帮我解决这个问题。
第一个数组
$array1 = array( [0]=> array( [id]=>1 [name]=>n1)
[1]=> array( [id]=>2 [name]=>n2)
[2]=> array( [id]=>3 [name]=>n3)
)
第二个数组
$array2 = array( [0]=> array( [id]=>1 [name]=>n1)
)
输出应该看起来像
$outarray =array(
[0]=> array( [id]=>2 [name]=>n2)
[1]=> array( [id]=>3 [name]=>n3)
)
答案 0 :(得分:1)
有很多方法可以做到这一点,这是一个明确比较'id'
键的功能性方法:
$ids = array_map(function ($i) { return $i['id']; }, $array2);
$outarray = array_filter($array1, function ($i) use ($ids) {
return !in_array($i['id'], $ids);
});
更多初学者友好的实施,做同样的事情:
$ids = array();
foreach ($array2 as $value) {
$ids[] = $value['id'];
}
$outarray = array();
foreach ($array1 as $value) {
if (!in_array($value['id'], $ids)) {
$outarray[] = $value;
}
}
答案 1 :(得分:0)
您是否在变量前面遗漏了$
?你可以这样使用:
$outarray[] = $array1;
$outarray[] = $array2;