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

后端 未结 5 1595
日久生厌
日久生厌 2021-01-19 10:15

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

相关标签:
5条回答
  • 2021-01-19 10:23

    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.
    
    0 讨论(0)
  • 2021-01-19 10:34

    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.

    0 讨论(0)
  • 2021-01-19 10:38

    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.

    0 讨论(0)
  • 2021-01-19 10:40

    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.

    0 讨论(0)
  • 2021-01-19 10:49

    If you write

    echo "This is a test using $vars"

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

    If you write

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

    Everything will be OK.

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

    0 讨论(0)
提交回复
热议问题