问题
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