我试图在没有嵌套循环的情况下完成此任务。我有以下2个数组:
$arr1 = array(
0 => array(
"key" => 1,
"value" => "Test 1"
),
1 => array(
"key" => 35
"value" => "Test 2"
)
...
);
$arr2 = array(
0 => array(
"key" => 1,
"value" => "Test 1"
)
...
);
print_r(array_diff_magic($arr1, $arr2));
返回数组1中从数组2中删除但通过比较子数组的“键”值的所有项。无法使用array_diff_keys,因为需要比较子数组的“键”而不是主数组的键。输出应该是这样的:
array(1) {
[0] => array(2) {
["key"] => 35,
["value"] => "Test 2"
}
}
有没有办法在不使用嵌套的foreach循环的情况下执行此操作?
答案 0 :(得分:1)
尝试array_udiff以获得差异,然后array_values开始生成数组的索引为0:
$arr3 = array_values(array_udiff($arr1, $arr2, function($a, $b) {
return $a['key'] - $b['key'];
}));