Логических операторов или vs || (двойной канал) в php
Я всегда использовал ||
(двойной канал) для if (($a == $b) || ($a == $c)) { }
и or
для do_this() or do_that();
.
Почему бы не if (($a == $b) or ($a == $c)) { }
или do_this() || do_that();
?
Есть ли какая-нибудь причина использовать любой из этих двух логических операторов, или это только личное предпочтение?
То же самое относится к &&
vs and
, в котором я использую только &&
.
Ответы
Ответ 1
Операторы с выраженным выражением and
и or
имеют более низкий приоритет, даже ниже, чем назначение, поэтому вы можете использовать их, чтобы избежать необходимости писать круглые скобки во многих местах. Например:
$d=$a||$b and $c
эквивалентно ($d=$a||$b) && $c
Они также более читабельны во многих контекстах.
Ответ 2
Две разные версии работают с разными приоритетами:
http://www.php.net/manual/en/language.operators.precedence.php