There is no built-in function that does exactly what you are asking for. array_diff()
is close, but not quite. So you'll have to roll your own nice neat function or else do something ugly like this:
array_diff( array_unique(
array_merge(
array_values($arr2),
array_values($arr3),
array_values($arr4)
)),
$arr1
);
You can remove the call to array_unique()
if you want values that appear multiple times in the arrays to also be represented multiple times in your result.
You can remove the calls to array_values()
if your keys in your arrays are all numeric or if you are certain that there are no non-numeric keys that appear in more than one of the arrays being merged.
So, in those ideal circumstances, it can be simplified to:
array_diff( array_merge( $arr2, $arr3, $arr4 ), $arr1 );