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

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

提问人:Katrina 提问时间:8/4/2015 更新时间:8/4/2015 访问量:348

问:

从我在 PHP 手册中可以看出,定义带有双括号或双美元符号的变量之间似乎没有太大区别。

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

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

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

php 字符串 变量

评论


答:

1赞 Jochem 8/4/2015 #1

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

1赞 lxg 8/4/2015 #2

两个版本基本相同。

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

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

var_dump($bar); // foobar

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

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