Данный синтаксис называется сложным не потому, что труден в понимании, а потому что позволяет использовать сложные выражения.
Фактически, вы можете включить любое значение, находящееся в пространстве имени в строке с этим синтаксисом. Вы просто записываете выражение таким же образом, как и вне строки, а затем заключаете его в { и }. Поскольку вы не можете экранировать '{', этот синтаксис будет распознаваться только когда $ следует непосредственно за {. (Используйте "{\$" или "\{$" чтобы отобразить "{$"). Несколько поясняющих примеров:
<?php // Давайте покажем все ошибки error_reporting(E_ALL);
$great = 'fantastic';
// Не работает, выведет: This is { fantastic} echo "This is { $great}";
// Работает, выведет: This is fantastic echo "This is {$great}"; echo "This is ${great}";
// Работает echo "Этот квадрат шириной {$square->width}00 сантиметров.";
// Работает echo "Это работает: {$arr[4][3]}";
// Это неверно по той же причине, что и $foo[bar] неверно вне // строки. Другими словами, это по-прежнему будет работать, // но поскольку PHP сначала ищет константу foo, это вызовет // ошибку уровня E_NOTICE (неопределенная константа). echo "Это неправильно: {$arr[foo][3]}";
// Работает. При использовании многомерных массивов, внутри // строк всегда используйте фигурные скобки echo "Это работает: {$arr['foo'][3]}";
echo "Вы даже можете записать {$obj->values[3]->name}";
echo "Это значение переменной по имени $name: {${$name}}"; ?>
Доступ к символу в строке и его изменение:
Символы в строках можно использовать и модифицировать, определив их смещение относительно начала строки, начиная с нуля, в фигурных скобках после строки. Приведем примеры: