@sprashivatel

Правильно ли я понимаю сокращённый синтаксис?

$a = null;
$b = $a ?? null; // если $a не null, то присваиваем $a, в противном случае присваиваем null
$b = $a ?? $a; // если $a не null, то присваиваем $a, в противном случае присваиваем тоже $a :)

Я правильно понял, что это одинаковые условия?
  • Вопрос задан
  • 131 просмотр
Решения вопроса 2
neuotq
@neuotq
full stack php, стартапы, прокрастинация
Смысл таков:
Если крайне левое выражение у оператора ?? возвращает NULL, то оператор возвращает правое выражение.
Значит берём ваш первый случай:
$b = $a ?? null;
Здесь php проверяет $a, переменная у тебя null, значит в $b уходит значение которое справо. те null.
Второй ваш пример.
$b = $a ?? $a;
Здесь php проверяет $a, переменная у тебя null, значит в $b уходит значение которое справо. те $a.
Короче null имеет значение при проверке левой части оператора, при этом он не ругается на то что переменная не существует (аналогично isset() ), поэтому удобно проверять установку переменных, массивов и тп
Ответ написан
@FanatPHP
Чебуратор тега PHP
Нет, неправильно.
Null coalescing на самом деле не про null. А про существование переменной.

Для приведенного кода результат будет одинаковый. Но приведенный вариант кода попросту бессмысленный, проще написать
$b = $a;
Или просто использовать $a.

А если применять оператор по назначению, то в последней строчке будет ошибка.
$b = $a ?? $a; // если $a существует и не null, то присваиваем $a, в противном случае получим ошибку если $a не существует

Поэтому так никто не пишет.
А единственным осмысленным вариантом является
$b = $a ?? null; // если $a существует и не null, то присваиваем $a, в противном случае присваиваем null

причем вместо null может быть любое другое дефолтное значение.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
04 апр. 2020, в 23:07
30000 руб./за проект
04 апр. 2020, в 23:05
100000 руб./за проект
04 апр. 2020, в 22:57
2000 руб./за проект