当我评估the expressions below时,结果完全不同,具体取决于评估顺序以及我是否分配了值:
$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
我完全难过了。为什么会这样?
答案 0 :(得分:6)
=
的优先级高于and
。因此$c = $a and $b;
与($c = $a) and $b;
相同,$ a的值分配给$ c。这与优先级高于&&
的{{1}}不同,因此=
评估为$c = $a && $b
;
答案 1 :(得分:1)
$c = ($a && $b); // will fix the problem