Если вы используете AND
и OR
, вы в конечном итоге получите что-то вроде этого:
$this_one = true;
$that = false;
$truthiness = $this_one and $that;
Хотите угадать, что $truthiness
равно?
Если вы сказали false
... bzzzt, извините, неправильно!
$truthiness
выше имеет значение true
. Зачем? =
имеет более высокий приоритет , чем and
. Добавление скобок для отображения неявного порядка делает это более понятным:
($truthiness = $this_one) and $that
Если вы использовали &&
вместо and
в первом примере кода, он будет работать как положено и будет false
.
Как обсуждалось в комментариях ниже, это также работает для получения правильного значения, так как скобки имеют более высокий приоритет, чем =
:
$truthiness = ($this_one and $that)