PHP-通过引用与空合并运算符进行赋值

时间:2019-04-19 09:45:58

标签: php pass-by-reference variable-assignment php-7 null-coalescing-operator

我试图创建一个包含对另一个变量(如果已定义)或另一个值的引用的变量:

$arr = &$original ?? [];

在此示例中,已经定义$original时一切正常。否则,似乎会跳过空合并运算符,因为$arr包含NULL而不是 default 空数组。

使用三元运算符会导致解析错误:

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

实现此目标的唯一方法是使用更长语法的if语句:

if (isset($original)) {
    $arr = &$original;
} else {
    $arr = [];
}
  • 实现这一目标的方法会更短吗?
  • 为什么null合并运算符不能在这里提供帮助?应该吗?

编辑:
似乎按引用分配将创建变量(如果它不存在):

$b = &$a ?? [];
var_dump($a); // without the previous line, triggers a "Notice: Undefined variable: a in ..."

但是$a仍然是null$b应该包含一个空数组。

1 个答案:

答案 0 :(得分:1)

您可以这样处理

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