Тернарные операторы

?: Условный тернарный оператор

Выражение (expr1) ? (expr2) : (expr3) интерпретируется как expr2, если expr1 имеет значение true, или как expr3, если expr1 имеет значение false.

$result = (2 > 1) ? 'если true' : 'если false';

//аналогично этому
if(2 > 1) {
    $result = 'если true';
}else{
    $result = 'если false';
}

Кророткий тернарный оператор (expr1) ?: (expr2)

$result = $var ?: '';

//аналогично этому
if($var) {
    $result = $var;
}else{
    $result = '';
}

Цепочка коротких тернарных операторов (?:) вернёт первый аргумент, который оценивается как не ложное значение.

?? Оператор объединения с null

Выражение (expr1) ?? (expr2) вычисляется так: expr2, если expr1 равен null и expr1 в противном случае. То же самое что и ?: но возвращает первый результат который не null. То есть вернёт даже false, главное что бы не null.

Удобно использовать для определения дефолтного значения, если первый операнд равен null.

Так же ?? можно использовать для проверки существования ключей массива, если таких ключей нету, то он присвоит следующуе значение и не вызовет ошибку.

Last updated