我想知道何时以及为什么要使用{$ var}
echo "This is a test using {$var}";
以及何时(和为什么)我应该使用简单形式$ var
echo "This is a test using $var";
答案 0 :(得分:4)
当a)没有访问值的对象或数组时,你会使用后者; b)没有字符跟随可能被解释为其一部分的变量名。
答案 1 :(得分:4)
http://php.net/manual/en/language.variables.variable.php
为了将变量变量与数组一起使用,您必须解析一个 歧义问题。也就是说,如果你 写$$ a [1]然后解析器需要 知道你是否打算用$ a [1]作为 变量,或者如果你想要$$ a作为 变量,然后是[1]索引 那个变量。的语法 解决这种歧义的是:$ {$ a [1]} 对于第一种情况和$ {$ a} [1] 第二个。
答案 2 :(得分:3)
括号允许您在某些特殊情况下消除PHP解析器的歧义。 在你的情况下,它们是等价的。
但请考虑一下:
$foobar = 'hello';
$foo = 'foo';
echo "${$foo . 'bar'}"; // hello
如果没有括号,您将无法获得预期结果:
echo "$$foo . 'bar'"; // $foo . 'bar'
为了清楚起见,我强烈建议不要使用这种语法。
答案 3 :(得分:2)
答案 4 :(得分:1)
如果你写
echo“这是使用$ vars的测试”
您在结果文本中没有获得$ var的内容。
如果你写
echo“这是一个使用{$ var} s”的测试;
一切都会好的。
P.S。它仅适用于“”但不适用于''。
答案 5 :(得分:1)
{}
表示法对于在字符串中嵌入多维数组也很有用。
e.g。
$array[1][2] = "square";
$text = "This $array[1][2] has two dimensions";
将被解析为
$text = "This " . $array[1] . "[2] has two dimensions";
你最终会得到文字
This Array[2] has two dimensions
但如果你这样做
$text = "This {$array[1][2]} has two dimensions";
你最终得到了预期的
This square has two dimensions.