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

时间:2015-08-03 21:13:26

标签: php string variables variable-variables

从我在PHP Manual中可以看出,用双括号或双美元符号定义变量变量似乎没有多大区别。

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

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

两个版本基本相同。

花括号表示法用于可能存在歧义的情况:

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

var_dump($bar); // foobar

如果你在上面的例子中省略了大括号,你会发现一个致命错误,使用大括号,它可以正常工作。

但是,我建议完全避免使用动态变量名。它们很有趣,可以节省一些空间。但最终,您的代码将变得不易读,您将无法进行调试。