PHP :: Логические операторы
PHP поддерживает следующие стандартные логические операторы: AND и && (логическое И), OR и || (логическое ИЛИ), ! (логическое НЕ) и XOR (исключающее ИЛИ). Все они используются в логических выражениях для определения того или иного хода выполнения программы в зависимости от возвращаемого выражением результата и относятся к бинарным операторам, за исключением оператора !, который является унарным. При использовании логических операторов их операнды преобразуются к булевому типу данных (смотреть), а результат зависит от приведенных логических значений операндов и вида логического оператора (см. таблицу №1).
Пример | Название | Результат |
---|---|---|
$a and $b | Логическое И | TRUE, если оба значения и $a, и $b равны TRUE. |
$a or $b | Логическое ИЛИ | TRUE, если оба значения равны TRUE или хотя бы одно из значений $a или $b равно TRUE. |
$a xor $b | Исключающее ИЛИ |
TRUE, если одно из значений $a или $b равно TRUE, но не оба сразу. |
! $a | Логическое НЕ | TRUE, если значение $a не равно TRUE. |
$a && $b | Логическое И | TRUE, если оба значения и $a, и $b равны TRUE. |
$a || $b | Логическое ИЛИ | TRUE, если оба значения равны TRUE или хотя бы одно из значений $a или $b равно TRUE. |
Таблица №1. Логические операторы
Разница между операторами AND и &&, а также OR и || заключается в том, что операторы AND, OR и XOR имеют более низкий приоритет, который даже ниже, чем у операторов присваивания (см. таблицу операторов PHP).
Важно понимать, как интерпретатор обрабатывает логические выражения. Если в выражении с оператором || первый (левый) операнд будет иметь значение true или в выражении с оператором && первый операнд будет иметь значение false, то второй (правый) операнд уже вычисляться не будет. Это связано с тем, что конечный результат в таких случаях уже не изменится (см. таблицу №1), а следовательно отпадает и необходимость тратить время на обработку кода второго операнда. Однако при этом нужно быть внимательным и не помещать в правый операнд код, от которого может зависеть правильная работа программы.
Использование логических операторов показано в примере №2.
<?php //Теперь $a==true, т.к. операнды преобразуются к //логическому типу, поэтому 5 преобразовалось в true $a=5||true; //Теперь $a==false, т.к. 0->false $a=0||false; //Теперь $a==true, т.к. 5->true и 8->true $a=5&&8; //Теперь $a==false, т.к. '0'->false $a='0'&&8; //Теперь $a==true $a=!false; //Теперь $a==false, т.к. 5->true $a=!5; /* Функция foo() не будет вызываться из-за шунтов */ $a=(false&&foo()); $b=(true||foo()); $c=(false and foo()); $d=(true or foo()); /* Отличие '||' от 'or' и '&&' от 'and' */ //Действует как ($a=(false||true)) $a=false||true; //Действует как (($a=false) or true) $a=false or true; //Действует как ($a=(false&&true)) $a=false&&true; //Действует как (($a=false) and true) $a=false and true; //Теперь $a==5, действует как (($a=5) xor 0) $a=5 xor 0; //Теперь $a==5, действует как (($a=5) and 0) $a=5 and 0; //Теперь $a==5, действует как (($a=5) or 0) $a=5 or 0; //Теперь $a==true, действует как ($a=(5||0)) $a=5||0; //Теперь $a==false, действует как ($a=(5&&0)) $a=5&&0; //Теперь $a==true, действует как ($a=(5 xor 6)) $a=(5 xor 6); ?>
Пример №2. Использование логических операторов
Быстрый переход к другим страницам
- Операторы сравнения в PHP
- Логические операторы в PHP
- Оператор подавления ошибок в PHP
- Вернуться к оглавлению учебника