2011-04-07 111 views
28

是否有一个内置的函数来获取阵列2中不存在的数组1的所有成员?
我知道如何以编程方式完成它,只想知道是否有一个内置函数可以实现相同功能。所以请不要使用代码示例。array_intersect的对面吗?

+5

请注意,如果您正在寻找具有类似行为的功能,您很可能会在该功能的手册页中找到它,在“另请参见”一节中,您可以在http:// www中查看此问题.php.net/manual/en/function.array-intersect.php – 2011-04-07 14:05:31

回答

46

这听起来像是一个工作array_diff

返回包含所有从ARRAY1的 条目不 存在于任何其它数组的数组。

28

和array_diff绝对是明显的选择,但它在技术上并不阵列interesect相反。就拿这个例子:

$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)); 

注意:此方法仅在用数字键数组。

+1

谢谢你这是我正在寻找的,这应该是标记为解决方案 – artSir 2016-05-06 18:08:20