以下是否有简写:
$a ??= []; # Note: $a ??= [] is equivalent to $a = isset($a) ? $a : []
$b ??= [];
#...
$z ??= [];
一种可能的解决方案是:
foreach (array("a", "b", ..., "z") as $elem) {
$$elem ??= [];
}
我不喜欢上述方法的是,我将字符串列表而不是变量列表传递给 foreach 函数 - 如果变量名称发生更改,这会很不方便。还有其他更方便的解决方案吗?
在 php 中,您可以使用变量来实现这一点。这是一个更简洁和动态的解决方案:
foreach (range('a', 'z') as $letter) {
${$letter} ??= [];
}
此代码动态创建变量 $a 到 $z 并将它们初始化为空数组(如果尚未设置)。这样,您不需要显式传递变量名称列表。相反,它根据从“a”到“z”的字母范围动态生成它们。