参数是这样的:
function foo(arr1, arr2, arr3, arr4 ...)
并且该函数应返回arr2,arr3,arr4中所有元素的数组,这些元素在arr1中不存在。
这是否有内置功能?或者我是否需要自己制作foreach和stuff? :)
答案 0 :(得分:10)
没有内置功能可以完全满足您的要求。 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 :(得分:5)
您可以使用array_diff执行此操作,但您必须稍微改变一下。
$result = array_diff (array_merge ($arr2, $arr3, $arr4), $arr1);
编辑:特洛特的答案涵盖了我的一些边缘案例。这可能是你将获得的最佳解决方案。
答案 2 :(得分:1)