提问人:Katrina 提问时间:8/4/2015 更新时间:8/4/2015 访问量:348
PHP - 创建带有括号或双美元符号的变量的区别?
PHP - Difference in creating variable variables with brackets or double dollar signs?
问:
从我在 PHP 手册中可以看出,定义带有双括号或双美元符号的变量之间似乎没有太大区别。
$foo = 'hello';
$$foo = 'hi';
echo $hello; // 'hi'
$baz = 'goodbye';
${$baz} = 'bye';
echo $goodbye; // 'bye'
它在手册中提到的唯一区别是使用数组时。两者之间还有其他明显的区别吗?哪一个更适合哪些情况?
答:
1赞
Jochem
8/4/2015
#1
在这种情况下,没有区别。这就像使用括号对运算符进行分组,即使它们不是必需的。
1赞
lxg
8/4/2015
#2
两个版本基本相同。
大括号表示法用于可能存在歧义的情况:
$foo = 'bar';
$bar = [];
${$foo}[] = 'foobar';
var_dump($bar); // foobar
如果你在上面的例子中省略了大括号,你会得到一个致命的错误,使用大括号,它工作正常。
但是,我建议完全避免使用动态变量名称。它们使用起来很有趣,可以节省一些空间。但最终,您的代码将变得不那么可读,并且您将无法进行调试。
上一个:使用变量填充数组会导致错误
评论