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

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

Если логические операторы вам раньше не встречались, то поначалу они могут показаться чем-то необычным. Нужно представить, что вы делаете логические заключения на простом разговорном языке.

Например, можно сказать самому себе: «Если время уже больше 12, но меньше 14 часов, значит, нужно пообедать». В РНР код для такого высказывания может выглядеть следующим образом:

if ($hour > 12 && $hour < 14) dolunch();

Здесь набор инструкций для самого обеда помещен в функцию по имени dolunch, которую позже нужно будет создать. В этой инструкции отсутствует элемент then, поскольку его присутствие само собой разумеется.

Как видно из предыдущего примера, логический оператор обычно используется для объединения результатов работы двух операторов сравнения, показанных в предыдущем разделе. Результат работы одного логического оператора может служить входным значением для другого логического оператора («Если время уже больше 12, но меньше 14 часов или если в прихожей пахнет жареным и тарелки уже стоят на столе»). Как правило, если какое-то действие имеет истинное или ложное значение — TRUE или FALSE, оно может служить входным значением для логического оператора, который берет два истинных или ложных входных значения и выдает в качестве результата истинное или ложное значение. Логические операторы показаны в таблице.

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

Оператор Описание Пример
`&& И $j == 3 && $k == 2
`and Низкоприоритетное И $j == 3 and $k == 2
| | ИЛИ $j < 5 | | $j > 10
or Низкоприоритетное ИЛИ $j < 5 or $j > 10
! НЕ ! ($j == $k)
xor Исключающее ИЛИ $j xor $k

Заметьте, что оператор && обычно взаимозаменяем с оператором and; то же самое справедливо и для операторов | | и or. Но у операторов and и or более низкий приоритет, поэтому в некоторых случаях, для того чтобы принудительно расставить приоритеты, могут понадобиться дополнительные круглые скобки. В то же время бывают случаи, когда применимы только операторы and или or, как в следующем предложении, использующем оператор or (объяснения даны в главе «Доступ к MySQLс использованием РНР»):

mysql_select_db($database) or die("Heвозможно выбрать базу данных");

Наиболее непривычным из этих операторов является xor, предназначенный для операции исключающего ИЛИ, который возвращает истинное значение true, если любое из входных значений истинно, и возвращает ложное значение false, если оба они имеют значение true или false. Чтобы понять его работу, представьте, что хотите изобрести чистящее средство для дома. Как аммиак (ammonia), так и хлорка (bleach) обладают хорошими чистящими свойствами, поэтому нужно, чтобы ваше средство содержало одно из этих веществ. Но оба они не могут в нем присутствовать, поскольку их сочетание представляет опасность. В РНР это можно представить в следующем виде:

$ingredient = $ammonia xor $bleach;

В представленном фрагменте если любая из двух переменных, $ammonia или $bleach, имеет значение true, то значение переменной $ingredient также будет установлено в true. Но если обе они имеют значение true или значение false, значение переменной $ingredient будет установлено в false.

Операторы сравненияПрисваивание значений переменным