与array_intersect相反?

2022-08-30 09:24:24

是否有内置函数来获取数组 1 中不存在的数组 2 中不存在的所有成员?
我知道如何以编程方式做到这一点,只是想知道是否有一个内置函数可以做同样的事情。所以,请不要使用代码示例。


答案 1

这听起来像是array_diff的工作。

返回一个数组,其中包含 array1 中不存在于任何其他数组中的所有条目。


答案 2

array_diff绝对是显而易见的选择,但从技术上讲,它并不是数组相交的反面。举个例子:

$arr1 = array('rabbit','cat','dog');

$arr2 = array('cat','dog','bird');

print_r( array_diff($arr1, $arr2) );

你想要的是一个包含“兔子”和“鸟”的结果,但你得到的只是兔子,因为它正在寻找第一个数组中的内容,而不是第二个数组中的内容(反之亦然)。要真正获得您想要的结果,您必须执行如下操作:

$arr1 = array('rabbit','cat','dog');

$arr2 = array('cat','dog','bird');

$diff1 = array_diff($arr1, $arr2);
$diff2 = array_diff($arr2, $arr1);
print_r( array_merge($diff1, $diff2) );

注意:此方法仅适用于具有数字键的数组。