多个变量未设置时设置为相同

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

以下是否有简写:

$a ??= []; # Note: $a ??= [] is equivalent to $a = isset($a) ? $a : []
$b ??= [];
#...
$z ??= [];

一种可能的解决方案是:

foreach (array("a", "b", ..., "z") as $elem) {
  $$elem ??= [];
}

我不喜欢上述方法的是,我将字符串列表而不是变量列表传递给 foreach 函数 - 如果变量名称发生更改,这会很不方便。还有其他更方便的解决方案吗?

php variables foreach default isset
1个回答
0
投票

在 php 中,您可以使用变量来实现这一点。这是一个更简洁和动态的解决方案:

foreach (range('a', 'z') as $letter) {
    ${$letter} ??= [];
}

此代码动态创建变量 $a 到 $z 并将它们初始化为空数组(如果尚未设置)。这样,您不需要显式传递变量名称列表。相反,它根据从“a”到“z”的字母范围动态生成它们。

© www.soinside.com 2019 - 2024. All rights reserved.