Если логические операторы вам раньше не встречались, то поначалу они могут показаться чем-то необычным. Нужно представить, что вы делаете логические заключения на простом разговорном языке.
Например, можно сказать самому себе: «Если время уже больше 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
.
Операторы сравнения | Присваивание значений переменным |