in_array returns a boolean -- true if the element is in in the array, false if it's not
expression && expression "returns" (or evaluates to) a boolean -- true if both expressions are true, false if either or both expressions are false
So in total the function returns a boolean -- true if both elements are in their respective arrays, or false if either or both elements aren't in their respective arrays.
This form isn't used a whole lot, but you do see it every once in a while.
Another thing I'm reminded off by looking at this is that the following also confuses people a lot
public function foo()
return $this->somevar = 5;
- returns 5, AND
- sets $this->somevar to 5
at the same time (compare to
if (($pos = strpos($haystack, $needle)) !== false) which can be similarly confusing)
For a complete list of logical operators like && see http://php.net/manual/en/language.operators.logical.php