-1

可能重复:
带有两个数组的array_unique

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

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

3 回答 3

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已经是答案了。我假设情况并非总是如此。

于 2012-12-17T23:42:42.560 回答
0

我相信你正在寻找array_intersect_assoc加上array_unique因为你的第一个数组有重复

于 2012-12-17T23:40:01.227 回答
0

好的,所以我不是 100% 确定您所说的“独特”是什么意思。我将假设您正在寻找一个在所有数组中出现一次的值。不是每次一次,而是一共一次。

借用我在这里找到的一些代码,你可以做这样的事情 -

$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

于 2012-12-17T23:44:25.217 回答