Тернарный оператор (условный) в PHP — это сокращенный способ написания конструкции if-else. Он позволяет оценить условие и вернуть значение A, если условие истинно, и значение В — когда оно ложно.
Тернарный оператор использует три операнда и записывается с помощью двух знаков ? :
. Он является единственным оператором в PHP, который использует более двух операндов.
Пример тернарного (условного) оператора:
# Синтаксис
$result = condition ? value1 : value2;
# более развернуто
$result = (условие) ? значение_если_истина : значение_если_ложь;
В зависимости от условия condition
тернарная операция возвращает второй или третий операнд (value1
или value2
). Если условие равно true
, то возвращается второй операнд - value1
. Если условие равно false
, то третий - value2
.
Пример:
$age = 25;
$message = ($age >= 18) ? 'Доступ разрешен' : 'Доступ запрещен'; // Доступ разрешен
Тоже самое с использованием if-else:
if ($age >= 18) {
$message = 'Доступ разрешен';
} else {
$message = 'Доступ запрещен';
}
# С использованием альтернативного синтаксиса if-else
if ($age >= 18):
$message = 'Доступ разрешен';
else:
$message = 'Доступ запрещен';
endif;
# Или так
if ($age >= 18) $message = 'Доступ разрешен';
else $message = 'Доступ запрещен';
Сокращенный тернарный оператор
Начиная с PHP версии 5.3 можно использовать сокращенный вариант записи тернарного оператора.
Оператор ?:
— бинарный оператор, который возвращает первый операнд если он истинен, и второй (по умолчанию) в ином случае. Еще его называют Elvis, потому что это слово похоже на else if.
Пример короткого тернарного оператора:
# Синтаксис
$result = (условие) ?: значение_если_ложь;
# Пример
$name = 'John';
$userName = $name ?: 'Guest';
Примечание:
Вложенные тернарные операторы
Тернарные операторы могут быть вложенными и представлять из себя цепочки:
$message = ($age >= 18)
? 'Доступ разрешен'
: (($age >= 14) ? 'Доступ разрешен с ограничениями' : 'Доступ запрещен');
if-else
или if-elseif
Оператор объединения с null
Оператор объединения с null (??
) является синтаксическим сахаром для достаточно распространённого действия, когда совместно используются тернарный оператор и функция isset()
. Он возвращает первый операнд, если он задан и не равен null, а в обратном случае возвращает второй операнд, и так далее.
# Синтаксис
$result = значение1 ?? значение2 ?? значение3;
# Пример
$result = $array['key'] ?? 'Apple';
# Если $array['key'] не установлен или NULL, переменная $result будет установлена в 'Apple'.
# Аналогичен этому коду
$result = isset($array['key']) ? $array['key'] : 'Apple';
# Или этому
if(isset($array['key'])) $result = $array['key'];
else $result = 'Apple';
Можно и так:
$array['key'] ??= 'Apple';
var_dump($array['key']); // Apple
Комментарии (0)
Пока еще не было комментариев ✍️