Оператор ИЛИ (OR) - PHP
В этом уроке вы узнаете о логическом операторе ИЛИ (OR) (||) в PHP и о том, как его использовать для создания сложных логических выражений.
Введение
Логический оператор ИЛИ (OR) принимает два операнда и возвращает true, если хотя бы один из них true; в противном случае возвращает false. Другими словами, логический оператор ИЛИ (OR) возвращает false, если оба операнда являются false.
Для представления логического оператора ИЛИ (OR), PHP использует ключевое слово or или || следующим образом:
expression1 or expression2Или:
expression1 || expression2Следующая таблица иллюстрирует результат оператора or:
| expression1 | expression2 | expression1 || expression2 |
|---|---|---|
| true | true | true |
| true | false | true |
| false | true | true |
| false | false | false |
Обратите внимание, что or, Or и OR считаются идентичными, потому что ключевые слова в PHP нечувствительны к регистру.
Операторы || и or возвращают одинаковый результат. Единственное различие между операторами || и or заключается в их приоритетах. Оператор or имеет более высокий приоритет, чем оператор ||.
Примеры оператора ИЛИ (OR) в PHP
Предположим, вам нужно очистить кеш веб-сайта, если для флага $expired или $purge установлено значение true. Для этого вы можете использовать логический оператор ИЛИ (OR) следующим образом:
<?php
$expired = true;
$purged = false;
$clear_cache = $expired || $purged;
var_dump($clear_cache);Вывод:
bool(true)Поскольку $expired имеет значение true, результат оператора ИЛИ (OR) также является истинным.
Однако если вы измените $expired на false, результат будет false, как показано в следующем примере:
<?php
$expired = false;
$purged = false;
$clear_cache = $expired || $purged;
var_dump($clear_cache);На практике логический оператор ИЛИ (OR) часто используется в условиях таких конструкций, как if, if-else, if-elseif, while и do-while.
Короткое замыкание в PHP
Когда первый операнд является true, логический оператор ИЛИ (OR) понимает, что результат также должен быть true. В этом случае второй операнд не вычисляется. Этот процесс называется коротким замыканием.
На практике часто встречается использование оператора or в следующем шаблоне:
function_call() || die(message)Если функция function_call() возвращает true, это означает успешное выполнение. PHP не выполнит второй операнд, который представляет собой вызов функции die(). В противном случае PHP вызовет функцию die() с сообщением об ошибке.
Например:
<?php
function connect_to_db()
{
return false;
}
connect_to_db() || die('Невозможно подключиться к базе данных.');Вывод:
Невозможно подключиться к базе данных.В этом примере функция connect_to_db() возвращает false, PHP вызывает функцию die(), которая отображает сообщение об ошибке.
Тонкости оператора ИЛИ (OR) в PHP
Взгляните на следующий пример:
<?php
$result = false or true;
var_dump($result);
Вывод:
bool(false)В этом примере можно было бы ожидать, что $result будет true, потому что выражение false or true возвращает true. Однако это не так.
При интерпретировании следующего выражения:
$result = false or true;PHP сначала рассчитывает $result = false, а затем оператор or, поскольку оператор = имеет более высокий приоритет, чем оператор or.
Обратите внимание, что у каждого оператора есть приоритет, и PHP будет вычислять операторы с более высоким приоритетом перед операторами с более низким приоритетом.
Технически это эквивалентно следующему:
($result = false) or true;Таким образом, $result присваивается false.
Чтобы это исправить, вам нужно использовать круглые скобки, чтобы изменить порядок вычислений:
<?php
$result = (false or true);
var_dump($result);Вывод:
bool(true)Или вы можете использовать || оператор:
<?php
$result = false || true;
var_dump($result);Вывод:
bool(true)Поэтому рекомендуется всегда использовать || оператор вместо оператора or.
Подытожим
- Используйте логический оператор ИЛИ (OR) (
or,||) в PHP, чтобы объединить два выражения и вернутьtrue, если хотя бы одно из выражений истинно; в противном случае возвращаетfalse. - Логический оператор ИЛИ (OR) поддерживает короткое замыкание.
- Используйте оператор
||вместо оператораor.
if elseif в PHP, которая позволяет выполнять блоки кода в зависимости от нескольких логических выражений.