Операторы сравнения в PHP (==, !=, === etc.) имеют больший приоритет, чем оператор назначения (=).
$a = 2;
$b = 5;
$a = $b == $a; // $a = false; все правильно
$a == $b = $a; // должно быть false = $a, затем ошибка, но все получается будто $a == ($b = $a);
В чем проблема?