PHP - 使用null合并运算符通过引用进行赋值

问题描述 投票:0回答:1

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

$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应该包含一个空数组。

php pass-by-reference variable-assignment php-7 null-coalescing-operator
1个回答
1
投票

你可以这样做

$arr = isset($original) ? $arr = &$original :  [];
© www.soinside.com 2019 - 2024. All rights reserved.