如何解决{$ 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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。