{$ var}和$ var之间有什么区别?
我想,当知道我为什么要使用{$ VAR}
echo "This is a test using {$var}";
当(为什么)我应该用简单的形式是$ var
你会使用后者当a)不访问该值的对象或数组时,以及b)没有字符跟随可能被解释为其一部分的变量名称。
如果你写
回声“这是使用$瓦尔测试”
你没有得到的结果文本$ VAR的内容。
如果你写
回声 “这是使用{$ VAR}个测试”;
一切都会好的。
P.S.它只适用于“”,但不适用于“”。
回声“这是一个使用$ vars的测试”将返回正确的 – 2011-05-24 14:20:23
如果$ var =“bla”将输出“这是一个使用blas测试”,所以我认为你错了。 – sica07 2011-05-24 14:23:54
@ sica07第一种情况下的$ vars没有定义,所以它会抛出一个PHP Notice:Undefined variable:vars。但是如果你已经定义了它,它将在双引号中回显。 {$ var}确保定义$ var,就像分离需要组合的变量和字符串一样。 – 2011-05-24 17:58:01
http://php.net/manual/en/language.variables.variable.php
为了使用可变的变量与数组,必须解决一个 模糊问题。也就是说,如果你写入$$ a [1],那么解析器需要 知道你是否打算使用$ a [1]作为 变量,或者如果你想$$ a作为 变量,然后[ 1]指数从 那个变量。解决此歧义的 的语法是:第一种情况为$ {$ a [1]} ,第二种情况为$ {$ a} [1]为 。
的支架可以使您免去歧义在某些特殊情况下PHP解析器。 就你而言,它们是等价的。
但考虑这一个:
$foobar = 'hello';
$foo = 'foo';
echo "${$foo . 'bar'}"; // hello
如果没有括号,你不会得到预期的结果:
echo "$$foo . 'bar'"; // $foo . 'bar'
为了清楚起见,我会但强烈反对这种语法。
{}
表示法也适用于在字符串中嵌入多维数组。
例如
$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.
谢谢你的明确解释 – sica07 2011-05-24 14:51:45
我在内部字符串中尽可能经常使用{} – 2011-05-24 14:25:13
[PHP手册页](http://php.net/manual/en/language.types.string.php#language.types.string.parsing。复杂) – 2011-05-24 14:16:34