PHP - 用括号或双美元符号创建可变变量的区别?

PHP - Difference in creating variable variables with brackets or double dollar signs?

据我在 PHP Manual 中所知,用双括号或双美元符号定义变量之间似乎没有太大区别。

$foo = 'hello';
$$foo = 'hi';
echo $hello; // 'hi'

$baz = 'goodbye';
${$baz} = 'bye';
echo $goodbye; // 'bye'

它在手册中提到的唯一区别是使用数组时。两者之间还有其他明显的区别吗?哪种情况更适合?

在这种情况下,没有区别。这就像使用括号对运算符进行分组,即使它们不是必需的。

两个版本基本相同

大括号符号用于可能有歧义的情况:

$foo = 'bar';
$bar = [];
${$foo}[] = 'foobar';

var_dump($bar); // foobar

如果你在上面的例子中省略了大括号,你会得到一个致命的错误,有大括号,它工作正常。

但是,我建议完全避免使用动态变量名。它们使用起来很有趣,可能会节省一些 space。但最后,你的代码会变得可读性变差,调试也会遇到麻烦。