我需要使用二维黑名单数组获取
$array1
中id为4和6的数组元素。基本上就是这两个数组的区别。我尝试使用 foreach 循环,但无法获得我想要的输出。
$array1 = [
['id' => 1],
['id' => 4],
['id' => 5],
['id' => 6],
];
$array2 = [
['id' => 1],
['id' => 5],
];
我想要的输出:
[
['id' => 4],
['id' => 6],
]
我尝试过的:
foreach ($array1 as $key => $value) {
foreach ($array2 as $key2 => $value2) {
if ($value2['id'] !== $value['id']){
$result['id'] = $value2['id'];
}
}
}
您可以像这样使用 array_udiff() 函数。
function diffCompare($a, $b)
{
return $a['id'] - $b['id'];
}
$difference = array_udiff($array1, $array2, 'diffCompare');
foreach ($array1 as $key => $value) {
foreach ($array2 as $key2 => $value2) {
if ($value2['id'] !== $value['id']) {
unset($array1[$key2]);
}
}
}
$array1
的数组元素比 array2 更多。我的问题是我需要获取 $array1
中不存在于 $array2
中的元素。
要解决此问题,如果
$array2
中存在 $array1
元素,请取消设置 $array1
中的元素。 $array1
将返回$array2
中不存在的元素。
使用 array_diff_key 获得预期的输出。
array_diff_key($array1, $array2)
它将 array1 中的键与 array2 中的键进行比较, 返回差值。这个函数类似于 array_diff(),除了 比较是在键而不是值上进行的。