我想从两个数组中删除重复的键。
我的代码是
$arr1[22068] = array('ID' => 22068);
$arr1[22067] = array('ID' => 22067);
$arr2[22068] = array('ID' => 22068);
$arr2[22066] = array('ID' => 22066);
$arr = array_diff($arr1, $arr2);
var_dump($arr); //It outputs null.
最终数组应如下所示 -
$arr[22066] = array('ID' => 22066);
$arr[22067] = array('ID' => 22067);
非常感谢任何帮助。
答案 0 :(得分:2)
array_diff_key()就是你想要的。
$arr1[22068] = array('ID' => 22068);
$arr1[22067] = array('ID' => 22067);
$arr2[22068] = array('ID' => 22068);
$arr2[22066] = array('ID' => 22066);
// Get elements of array 1 which are not present in array 2
$unique_1 = array_diff_key($arr1, $arr2);
// Get elements of array 2 which are not present in array 1
$unique_2 = array_diff_key($arr2, $arr1);
// Merge unique values
$unique = $unique_1 + $unique_2;
答案 1 :(得分:1)
因此,array_diff将为您提供array1与array2的不同之处,并且不适用于多维数组。你可以切换到array_key_diff,但是,你会遇到类似的问题:
$arr1[22068] = array('ID' => 22068);
$arr1[22067] = array('ID' => 22067);
$arr2[22068] = array('ID' => 22068);
$arr2[22066] = array('ID' => 22066);
$arr = array_diff_key($arr1, $arr2);
var_dump($arr); //It outputs array(1) {[22067]=> array(1) { ["ID"]=> int(22067) } }
我不知道有一个“神奇”的解决方案,但是,你有选择,你可以采取上面的代码并添加额外的行:
$arr2 = array_diff_key($arr2, $arr1);
var_dump($arr2)
然后合并$ arr和$ arr2,或者你可以编写一个循环并比较每个项目。根据大小,范围,可读性等取决于实际设置