使用php从两个数组中删除重复键

时间:2016-11-28 22:19:13

标签: php arrays

我想从两个数组中删除重复的键。

我的代码是

$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);

非常感谢任何帮助。

2 个答案:

答案 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,或者你可以编写一个循环并比较每个项目。根据大小,范围,可读性等取决于实际设置