参数是这样的:逆array_intersect的()
function foo(arr1, arr2, arr3, arr4 ...)
和函数应返回从ARR2,ARR3,arr4所有元素......这不存在ARR1的阵列。
有一个内置在这个功能呢?还是我需要用自己的东西和东西来制作它? :)
参数是这样的:逆array_intersect的()
function foo(arr1, arr2, arr3, arr4 ...)
和函数应返回从ARR2,ARR3,arr4所有元素......这不存在ARR1的阵列。
有一个内置在这个功能呢?还是我需要用自己的东西和东西来制作它? :)
有,它正是你所要求的没有内置的功能。 array_diff()
接近,但并不完全。所以你必须推出自己的漂亮整洁的功能,否则做这样的事情丑陋:
array_diff(array_unique(
array_merge(
array_values($arr2),
array_values($arr3),
array_values($arr4)
)),
$arr1
);
如果你想要那个多次出现在阵列也可以表示多值可删除调用array_unique()
次在您的结果。
可以或删除调用array_values()
如果你在你的数组键是所有的数字,如果你确信没有出现在阵列中的一个以上的被合并非数字键。
因此,在这些理想的情况下,它可以简化为:
array_diff(array_merge($arr2, $arr3, $arr4), $arr1);
+1所有没有发生到我的防御性编程 – GordonM
你可以用和array_diff做到这一点,但你将不得不扭转局面。
$result = array_diff (array_merge ($arr2, $arr3, $arr4), $arr1);
编辑:特洛特的答案占地面积,地雷不边缘的情况下的负载。这可能是你要得到的最好的解决方案。
在集合论它会被称为补 – 2011-12-04 19:16:21
DUP? http://stackoverflow.com/questions/5582242/opposite-of-array-intersect – Geo