Задать вопрос
@Snewer

В чем различие коалесцентного и короткого тернарного оператора?

Здравствуйте!
В чем разница между: $q = $var1 :? $var2; и $q = $var1 ?? $var2;. Для чего ввели новый оператор? Спасибо.
  • Вопрос задан
  • 363 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 2
Melkij
@Melkij
PostgreSQL DBA
Вот эти записи эквивалентны:
$q = $var1 ?? $var2;
$q = isset($var1) ? $var1 : $var2;


Внимание и на isset - т.е. E_NOTICE за обращение к неизвестной переменной не будет.
И внимание на поведение - coalesce проверяет на null, а не всё многообразие типов, приводимых к булеву. Например,
$var1 = false;
$var2 = 2;

$q1 = $var1 ?? $var2;
$q2 = $var1 ?: $var2;

var_dump($q1, $q2);

Различаются по поведению.
Ответ написан
Комментировать
@McBernar
Первый exist + not empty, второй просто exist.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы