Оператор & quot;? & Quot; и оператор И оценка

Это оценивается как ИСТИНА.

$A = TRUE;
$B = FALSE;

$result = ($A) AND ($B) ? true : false;

Почему оценка соответствует действительности, и как именно оценка проводится шаг за шагом?

Спасибо

1

Решение

Это не связано с троичным. Это потому что = имеет более высокий старшинство чем and, Это означает, что вы устанавливаете $result = ($A) а потом все после and не имеет значения.

($B) ? true : false делает оценить false, но поскольку присваивание уже произошло в первой части выражения, оно ни к чему не присваивается. Это в основном игнорируется.

Для более простого примера попробуйте

$result = true and false;

$result будет true,

4

Другие решения

Моя первоначальная мысль была Это возвращается true из-за пропущенных скобок. причина: троичные выражения оцениваются слева направо. Увидеть DEMO это вернется bool(false) если вы оберните это с круглыми скобками ()

$A = TRUE;
$B = FALSE;

$result = (($A) AND ($B)) ? true : false;
var_dump($result);

Отредактировано: Зачем & как используется второй FALSE?

Так как and/or иметь более низкий приоритет, чем =, но || или же && иметь более высокий приоритет, чем =, Например.

<?php
$bool = true && false;
var_dump($bool); // false, that's expected

$bool = true and false;
var_dump($bool); // true, ouch!
?>

Надеюсь, теперь это понятно :).
источник: http://php.net/manual/en/language.operators.precedence.php#117390

1

По вопросам рекламы [email protected]