其实,多加几个括号你就明白了,因为&&的执行大于赋值,实际上执行的顺序是:$a = 0;$b = 0;if ($a = ( 3 && ($b = 3))) { var_dump($a, $b); $a++; var_dump($a, $b); $b++;}echo $a . "," . $b;