@Snewer

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

Здравствуйте!
В чем разница между: $q = $var1 :? $var2; и $q = $var1 ?? $var2;. Для чего ввели новый оператор? Спасибо.
  • Вопрос задан
  • 361 просмотр
Решения вопроса 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.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽