是否有内置函数来获取数组 1 中不存在于数组 2 中的所有成员?
我知道如何以编程方式做到这一点,只是想知道是否有一个内置函数可以做到这一点。所以拜托,没有代码示例。
问问题
40410 次
5 回答
82
这听起来像是一份工作array_diff
。
返回一个数组,其中包含 array1 中不存在于任何其他数组中的所有条目。
于 2011-04-07T13:57:30.753 回答
51
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) );
注意:此方法仅适用于带有数字键的数组。
于 2013-04-25T22:08:13.937 回答
4
$diff = array_diff($array1, $array2);
于 2011-04-07T13:57:45.507 回答
2
在我调查这个问题时澄清一下,@Jon 和@Dallas Caley 的答案都是正确的,具体取决于您的数组域。
如果您要比较的数组是结果的完整域,那么根据@Jon 的答案,一个简单的 array_diff 就足够了。
如果与您比较的数组不是结果的完整域,那么您应该按照@Dallas Caley 的回答使用双数组差异。
于 2019-01-30T11:44:11.877 回答
0
我发现这个docstore.mik.ua/orelly/webprog/pcook/ch04_24.htm非常有用。
您可能想要一个反向差异,通过颠倒标准差异中的数组顺序。
于 2015-02-26T17:35:58.053 回答