我的思绪会爆炸。需要在数组1中获取id为4和6的数组元素。基本上它是这两个数组的差异。我尝试使用每个循环,但我不能得到我想要的输出
Array 1(
0 => array(
id: 1
)
1 => array(
id: 4
)
2 => array(
id: 5
)
3 => array(
id: 6
)
)
Array 2(
0 => array(
id: 1
)
1 => array(
id: 5
)
)
我想要的输出:
new Array (
0 => array (
id: 4
)
1 => array (
id: 6)
)
我尝试过的事情:
foreach ($array1 as $key => $value) {
foreach ($array2 as $key2 => $value2) {
if($value2['id'] !== $value['id']){
$result['id'] = $value2['id'];
}
}
}
答案 0 :(得分:3)
您可以使用array_udiff()这样的功能。
function diffCompare($a, $b)
{
return $a['id'] - $b['id'];
}
$difference = array_udiff($array1, $array2, 'diffCompare');
答案 1 :(得分:0)
使用array_diff_key获得预期的输出。
array_diff_key($array1, $array2)
它将来自array1的键与来自array2和的键的键进行比较 返回差异。这个函数就像array_diff()一样除了 比较是在键而不是值上完成的。
答案 2 :(得分:0)
解答:
foreach ($array1 as $key => $value) {
foreach ($array2 as $key2 => $value2) {
if($value2['id'] !== $value['id']){
unset($array1[$key2]);
}
}
}
说明: array1得到的数组元素比array2多,我的问题是我需要获取array2中不存在的数组1中的元素。所以要解决这个问题,如果array2元素存在于array1中,则取消设置array1中与array2中相同的元素。 array1将返回array2中不存在的元素