PHP - присваивание по ссылке с нулевым оператором объединения - PullRequest
0 голосов
/ 19 апреля 2019

Я попытался создать переменную, которая содержит ссылку на другую переменную, если она определена, или другое значение:

$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 должен содержать пустой массив.

1 Ответ

1 голос
/ 19 апреля 2019

Вы можете подойти к этому как

$arr = isset($original) ? $arr = &$original :  [];
...