通过特定键找出两个多维关联数组之间的差异?

时间:2015-04-24 16:11:08

标签: php arrays multidimensional-array

我试图在没有嵌套循环的情况下完成此任务。我有以下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循环的情况下执行此操作?

1 个答案:

答案 0 :(得分:1)

尝试array_udiff以获得差异,然后array_values开始生成数组的索引为0:

$arr3 = array_values(array_udiff($arr1, $arr2, function($a, $b) {
    return $a['key'] - $b['key'];
}));