PHP if and or или || && - и, или в условиях

Статья для новичков, но как ни странно, имел возможность пообщаться
с программистами (опытом более двух лет), которые не всегда понимают этот момент.

При использовании в условиях логических операций “И” и “ИЛИ”  язык PHP предоставляет возможность использовать операторы:
or или || - логическое “ИЛИ”
and или && - логическое “И”

На первый взгляд может показаться, что это избыточное дублирование (применительно к программированию почти всегда есть несколько способов достичь один и тот же результат). Однако, между ними имеется разница. Конечно же, она описана в мануале, но из-за невнимательного чтения даже те, кто заглядывал в документацию могли её не заметить. Разница в приоритете операций.

приоритет логических операций в PHP

or > xor > and > || > && > !

Пример для наглядной демонстрации (особое внимание следует обратить на расстановку поясняющих скобок в комментариях):
// “||” has a greater precedence than “or”
$e = false || true; // $e will be assigned to $e = (false || true) which is true
$f = false or true; // $f will be assigned to false: (($f = false) or true)
var_dump($e, $f);
//
// “&&” has a greater precedence than “and”
$g = true && false; // $g will be assigned to ($g = (true && false)) which is false
$h = true and false; // $h will be assigned to true (($h = true) and false)
var_dump($g, $h);

Использование or для условного выполнения.

Часто в коде можно встретить примеры использования or без всяких if.

mysql_connect(...) or die('DB error');

Такая конструкция также основана на приоритете вычислений - в случае, если первый аргумент (до конструкции `or`) имеет истинное значение, второй не вычисляется.

Метки:

Автор будет признателен, если Вы поделитесь ссылкой на статью, которая Вам помогла:
BB-код (для вставки на форум)

html-код (для вставки в ЖЖ, WP, blogger и на страницы сайта)

ссылка (для отправки по почте)

Добавить комментарий