我试图创建一个包含对另一个变量(如果已定义)或另一个值的引用的变量:
$arr = &$original ?? [];
在此示例中,已经定义$original
时一切正常。否则,似乎会跳过空合并运算符,因为$arr
包含NULL
而不是 default 空数组。
使用三元运算符会导致解析错误:
$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
应该包含一个空数组。
答案 0 :(得分:1)
您可以这样处理
$arr = isset($original) ? $arr = &$original : [];