从我在PHP Manual中可以看出,用双括号或双美元符号定义变量变量似乎没有多大区别。
$foo = 'hello';
$$foo = 'hi';
echo $hello; // 'hi'
$baz = 'goodbye';
${$baz} = 'bye';
echo $goodbye; // 'bye'
手册中提到的唯一区别是使用数组时。这两者之间还有其他明显的区别吗?哪一个更适合哪种情况?
答案 0 :(得分:1)
在这种情况下,没有区别。这就像使用括号对运算符进行分组,即使它们不是必需的。
答案 1 :(得分:1)
两个版本基本相同。
花括号表示法用于可能存在歧义的情况:
$foo = 'bar';
$bar = [];
${$foo}[] = 'foobar';
var_dump($bar); // foobar
如果你在上面的例子中省略了大括号,你会发现一个致命错误,使用大括号,它可以正常工作。
但是,我建议完全避免使用动态变量名。它们很有趣,可以节省一些空间。但最终,您的代码将变得不易读,您将无法进行调试。