可能重复:
带有两个数组的array_unique
如何在两个大小的数组之间找到唯一元素?
$array1 = array(2,1,1,3,5,5);
$array2 = array(2,1,3,5);
可能重复:
带有两个数组的array_unique
如何在两个大小的数组之间找到唯一元素?
$array1 = array(2,1,1,3,5,5);
$array2 = array(2,1,3,5);
$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
已经是答案了。我假设情况并非总是如此。
我相信你正在寻找array_intersect_assoc加上array_unique因为你的第一个数组有重复
好的,所以我不是 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
。