Я попытался создать переменную, которая содержит ссылку на другую переменную, если она определена, или другое значение:
$arr = &$original ?? [];
В этом примере все в порядке, когда $original
уже определено.Когда это не так, оператор объединения нулей , кажется, пропущен, так как $arr
содержит NULL
, а не по умолчанию пустой массив.
Использование троичногоОператор может вызвать ошибку разбора:
$arr = isset($original) ? &$original : [];
Единственный способ добиться этого - использовать оператор if
с более длинным синтаксисом:
if (isset($original)) {
$arr = &$original;
} else {
$arr = [];
}
- Будет либыть более коротким путем для достижения этой цели?
- Почему здесь не может помочь нулевой оператор объединения?Должно ли это?
РЕДАКТИРОВАТЬ:
Похоже, что присвоение по ссылке создаст переменную, если она не существует:
$b = &$a ?? [];
var_dump($a); // without the previous line, triggers a "Notice: Undefined variable: a in ..."
НоТем не менее, $a
- это null
, а $b
должен содержать пустой массив.