В чем разница между {$ var} и $ var?

Я хотел бы знать, когда и почему я должен использовать {$ var}

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

и когда (и почему) я должен использовать простую форму $ var

 echo "This is a test using $var"; 

    Вы бы использовали последнее, когда a) не обращались к объекту или массиву для значения, и b) никакие символы не следуют за именем переменной, которое можно было бы интерпретировать как часть его.

    http://php.net/manual/en/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";

    Все будет нормально.

    PS Он работает только с "", но не для ''.

    Обозначение {} также полезно для встраивания многомерных массивов в строки.

    например

     $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.