В качестве еще одного дополнения, {}
нотации ТРЕБУЕТСЯ, если вы хотите использовать многомерный массив или объект внутри "
-quoted строки. например
$foo[1][2] = 'bar';
echo "hi $foo[1][2] mom"; // prints: hi Array[2] mom
echo "hi {$foo[1][2]} mom"; // prints: hi bar mom
анализатор PHP не является «жадным», и как только он находит первый []
ключ для переменного массива, он не сканирует в дальнейшем для более клавиша. Это означает, что ключи дочерних массивов будут игнорироваться, и теперь вы печатаете массив в контексте строки, который является просто буквальным словом Array
.
То же относится к объектам:
$foo = new StdClass;
$foo->bar = new StdClass;
$foo->bar->baz = 'qux';
echo "hi $foo->bar->baz mom"; // prints: PHP catchable: Object of StdClass could not be converted to string
echo "hi {$foo->bar->baz} mom"; // prints: hi qux mom
В обоих случаях не-приготовился версии будут анализироваться/выполнены как эквивалент:
echo "hi " . $foo[1] . "[2] mom";
echo "hi " . $foo->bar . "->baz mom";
боян: http://stackoverflow.com/ вопросы/5571624/что-делает-средней-в-PHP-синтаксис – nogad