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

时间:2012-01-13 23:44:18

标签: php boolean variable-assignment operator-precedence

当我评估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

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

2 个答案:

答案 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