Как булево выражение может зависеть от порядка и назначения оценки? - PullRequest
1 голос
/ 14 января 2012

Когда я оцениваю выражения ниже , результат полностью отличается в зависимости от порядка оценки и от того, присваиваю ли я значение или нет:

$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 ]

6 голосов
/ 14 января 2012

= имеет более высокий приоритет, чем and.Таким образом, $c = $a and $b; совпадает с ($c = $a) and $b;, значение $ a присваивается $ c.Это отличается от &&, который имеет более высокий приоритет, чем =, поэтому $c = $a && $b оценивается как $c = ($a && $b);

1 голос
/ 14 января 2012
$c = ($a && $b);  // will fix the problem
...