Opposite of array_intersect? Opposite of array_intersect? arrays arrays

Opposite of array_intersect?


That sounds like a job for array_diff.

Returns an array containing all the entries from array1 that are not present in any of the other arrays.


array_diff is definitely the obvious choice but it is not technically the opposite of array interesect. Take this example:

$arr1 = array('rabbit','cat','dog');$arr2 = array('cat','dog','bird');print_r( array_diff($arr1, $arr2) );

What you want is a result with 'rabbit' and 'bird' in it but what you get is only rabbit because it is looking for what is in the first array but not the second (and not vice versa). to truly get the result you want you must do something like this:

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

Note: This method will only work on arrays with numeric keys.