array_diff() returns an array containing all the values of array1 that are not present in any of the other arguments. Note that keys are preserved.
This makes $result have array ("blue");. Multiple occurences in $array1 are all treated the same way.
Note: Two elements are considered equal if and only if (string) $elem1 === (string) $elem2. In words: when the string representation is the same.
This was broken in PHP 4.0.4!
See also array_intersect().