如何在两个大小的数组之间找到独特的元素?

时间:2012-12-17 23:24:02

标签: php arrays

  

可能重复:
  array_unique with two arrays

如何在两个大小的数组之间找到独特的元素?

$array1 = array(2,1,1,3,5,5);   
$array2 = array(2,1,3,5); 

3 个答案:

答案 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_assocarray_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