Оператор ИЛИ (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
.