如何在两个大小的数组之间找到独特的元素?
$array1 = array(2,1,1,3,5,5);
$array2 = array(2,1,3,5);
答案 0 :(得分:2)
$array1 = array(2,1,1,3,5,5);
$array2 = array(2,1,3,5);
$array1 = array_unique($array1, SORT_NUMERIC);
$array2 = array_unique($array2, SORT_NUMERIC);
$unique = array_intersect($array1, $array2);
var_dump($unique);
收率:
array(4) {
[0] =>
int(2)
[1] =>
int(1)
[3] =>
int(3)
[4] =>
int(5)
}
当然,在这个例子中,这意味着$array2
已经是答案。我认为并非总是如此。
答案 1 :(得分:0)
我相信您正在寻找array_intersect_assoc加array_unique,因为您的第一个数组有重复
答案 2 :(得分:0)
好的,所以我不是100%肯定你的“独特”是什么意思。我将假设您正在寻找在所有阵列中出现一次的值。 不是每次,而是一次。
借用我发现here的一些代码,你可以做这样的事情 -
$array1 = array(2,1,1,3,5,5);
$array2 = array(2,1,3,5);
$array1 = array_unique($array1);
$array2 = array_unique($array2);
$merge = array_merge($array1,$array2);
// thanks @gumbo!
$final = array_diff($merge, array_diff_assoc($merge, array_unique($merge)));
执行此代码时会发生什么? $final
数组中的内容是什么?那么,获取数据后,$final
数组将为空,因为数组之间没有唯一的元素。如果您在其中删除另一个元素,则将填充$final
数组。例如 -
$array1 = array(2,1,1,3,5,5,7);
$array2 = array(2,1,3,5);
在这种情况下,$final
将仅包含元素7
。