Материал предоставлен https://it.rfei.ru

Логические операторы

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

Логические операторы

Логический оператор Описание
AND Возвращает истинное значение (TRUE), если оба операнда имеют истинные значения
OR Возвращает истинное значение (TRUE), если любой из операндов имеет истинное значение
XOR Возвращает истинное значение (TRUE), если один из двух операндов имеет истинное значение
NOT Возвращает истинное значение (TRUE), если операнд имеет ложное значение, или ложное значение (FALSE), если он имеет истинное значение

Использование этих операторов показано в примере. Заметьте, что РНР требует использовать вместо слова NOT символ !. Кроме того, операторы могут быть составлены из букв нижнего или верхнего регистра.

Пример. Использование логических операторов

<?php
$a = 1; $b = 0;
echo ($a AND $b) . "<br />";
echo ($a or $b)  . "<br />";
echo ($a XOR $b) . "<br />";
echo !$a         . "<br />";
?>

Этот пример выводит на экран NULL, 1, 1, NULL. Это значит, что только вторая и третья инструкции echo получают в результате вычисления значение TRUE. (Следует помнить, что NULL, или ничто, отображает значение FALSE.) Такой результат получается, потому что оператору AND, чтобы вернуть значение TRUE, нужно, чтобы оба операнда имели истинное значение, а четвертый оператор проводит над значением переменной операцию NOT, превращая его из TRUE (значения, равного единице) в FALSE. Если есть желание поэкспериментировать, запустите этот код, присваивая переменным и $b разные значения, выбранные из 1 и 0.

Занимаясь программированием, следует помнить, что у операторов AND и OR более низкий уровень приоритета, чем у других версий этих операторов — && и ||. Поэтому в сложных выражениях более безопасным будет, наверное, применение операторов && и ||.

При использовании в инструкции if оператор OR может стать причиной непредвиденных проблем, поскольку второй операнд не будет вычисляться, если в результате вычисления первого операнда уже получено значение TRUE. В следующем примере функция getnext никогда не будет вызвана, если переменная $finished имеет значение 1.

Пример. Инструкция, использующая оператор OR

<?php
if ($finished == 1 OR getnext() == 1) exit;
?>

Если нужно, чтобы функция getnext вызывалась для каждой инструкции if, следует внести в код изменения, показанные в примере ниже.

Пример. Изменения в инструкции “if ... OR”, гарантирующие вызов функции getnext

<?php
$gn = getnext();
if ($finished == 1 OR $gn == 1) exit;
?>

В этом случае код в функции getnext будет выполнен и возвращенное значение будет сохранено в переменной $gn еще до выполнения инструкции if.

В таблице показаны все допустимые варианты использования логических операторов. Следует заметить, что !TRUE является эквивалентом FALSE, а !FALSE — эквивалентом TRUE.

Все логические выражения, допустимые в РНР

Входные данные Операторы и результаты
а b AND OR
TRUE TRUE TRUE TRUE
TRUE FALSE FALSE TRUE
FALSE TRUE FALSE TRUE
FALSE FALSE FALSE FALSE
Операторы сравненияУсловия