是否有内置函数来获取阵列1中不存在的数组1的所有成员?
我知道如何以编程方式执行此操作,只是想知道是否有内置函数执行相同操作。所以,请没有代码示例。
答案 0 :(得分:61)
这听起来像是array_diff
的工作。
返回包含所有内容的数组 array1中的条目不是 存在于任何其他阵列中。
答案 1 :(得分:35)
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) );
注意:此方法仅适用于带数字键的数组。
答案 2 :(得分:4)
$diff = array_diff($array1, $array2);
答案 3 :(得分:0)
我发现这个docstore.mik.ua/orelly/webprog/pcook/ch04_24.htm非常有用。
您可能需要反向差异,通过在标准差异中反转数组的顺序。
答案 4 :(得分:0)
在澄清这个问题时,请澄清一下,根据数组的域,@ Jon和@Dallas Caley的答案都是正确的。
如果要比较的数组是结果的完整域,那么根据@Jon答案,简单的array_diff就足够了。
如果与您比较的数组不是结果的完整域,则应按照@Dallas Caley的答案使用double array_diff。