我试图创建一个变量,其中包含对另一个变量的引用(如果已定义)或其他值:
$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
应该包含一个空数组。
你可以这样做
$arr = isset($original) ? $arr = &$original : [];