Что выведет код Middle Типы и строгая типизация обновлено
Операторы ??, ?: и ?->
Вопрос
Что выведет скрипт (PHP 8.3)? По строке на каждый вывод.
<?php
$a = ['x' => 0, 'y' => null];
echo $a['x'] ?? 'def', "\n";
echo $a['x'] ?: 'def', "\n";
echo $a['y'] ?? 'def', "\n";
echo $a['z'] ?? 'def', "\n";
$user = null;
var_dump($user?->profile?->name);
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: 0, def, def, def, NULL. ?? подставляет значение только для несуществующего ключа или null: для 0 вернёт 0. ?: срабатывает на любое ложное значение, поэтому def.
Что выведет
0
def
def
def
NULL
Разбор
?? подставляет значение только для несуществующего ключа или null: для 0 вернёт 0. ?: срабатывает на любое ложное значение, поэтому def. Для null и отсутствующего ключа ?? даёт def без предупреждений. Nullsafe ?-> (PHP 8.0) обрывает цепочку на null: NULL.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.