Whats the difference between {$var} and $var?

こ雲淡風輕ζ 提交于 2019-12-20 01:45:45

问题


I would like to know when and why should I use {$var}

echo "This is a test using {$var}";

and when (and why) should I use the simple form $var

echo "This is a test using $var";

回答1:


You would use the latter when a) not accessing an object or array for the value, and b) no characters follow the variable name that could possibly be interpreted as part of it.




回答2:


http://php.net/manual/en/language.variables.variable.php

In order to use variable variables with arrays, you have to resolve an ambiguity problem. That is, if you write $$a[1] then the parser needs to know if you meant to use $a[1] as a variable, or if you wanted $$a as the variable and then the [1] index from that variable. The syntax for resolving this ambiguity is: ${$a[1]} for the first case and ${$a}[1] for the second.




回答3:


The brackets allow you to remove ambiguity for the PHP parser in some special cases. In your case, they are equivalent.

But consider this one:

$foobar = 'hello';
$foo = 'foo';
echo "${$foo . 'bar'}"; // hello

Without the brackets, you will not get the expected result:

echo "$$foo . 'bar'"; // $foo . 'bar'

For clarity purposes, I would however strongly advise against this syntax.




回答4:


get the answer from here

Should I use curly brackets or concatenate variables within strings?

for more check this

http://cowburn.info/2008/01/12/php-vars-curly-braces/




回答5:


If you write

echo "This is a test using $vars"

You does not get content of $var in result text.

If you write

echo "This is a test using {$var}s";

All will be OK.

P.S. It works only with "" but not for ''.




回答6:


The {} notation is also useful for embedding multi-dimensional arrays in strings.

e.g.

$array[1][2] = "square";

$text = "This $array[1][2] has two dimensions";

will be parsed as

$text = "This " . $array[1] . "[2] has two dimensions";

and you'll end up with the text

This Array[2] has two dimensions

But if you do

$text = "This {$array[1][2]} has two dimensions";

you end up with the expected

This square has two dimensions.


来源:https://stackoverflow.com/questions/6111796/whats-the-difference-between-var-and-var

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!