布尔表达式如何依赖于评估顺序和赋值?

Jak*_*kob 1 php boolean variable-assignment operator-precedence

当我评估下面的表达式时,结果完全不同,具体取决于评估顺序以及是否分配值:

$a = true;
$b = false;
var_dump($a and $b); // false

$c = $a and $b;
var_dump($c); // true

$d = $b and $a;
var_dump($d); // false
Run Code Online (Sandbox Code Playgroud)

我完全难过了.为什么会这样?

a1e*_*x07 6

=优先级高于and.所以$c = $a and $b;是一样的($c = $a) and $b;,$ a的值被分配给$ C.这&&与其具有更高的优先级不同=,因此$c = $a && $b评估为$c = ($a && $b);