{$ var}和$ var有什么区别?

| 我想知道何时以及为什么要使用{$ var}
echo \"This is a test using {$var}\";
以及何时(以及为什么)应该使用简单形式$ var
echo \"This is a test using $var\";
    
已邀请:
当a)不访问对象或数组的值,并且b)没有字符跟随变量名(可能会解释为变量名)时,将使用后者。     
http://php.net/manual/zh/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\'
为了清楚起见,我强烈建议不要使用此语法。     
从这里得到答案 我应该在字符串中使用大括号还是连接变量? 更多信息请查看 http://cowburn.info/2008/01/12/php-vars-curly-braces/     
如果你写 echo \“这是使用$ vars的测试\” 您没有在结果文本中获得$ var的内容。 如果你写 echo \“这是使用{$ var} s的测试\”; 一切都会好的。 附言它仅适用于\“ \”,不适用于\'\'。     
{}
标记对于在字符串中嵌入多维数组也很有用。 例如
$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.
    

要回复问题请先登录注册