Переменные переменных
  
   Иногда переменные имена переменных повышают удобство работы с кодом.
   Переменное имя переменной — имя переменной, которое устанавливается и изменяется
   динамически. Стандартную переменную устанавливают вот такой инструкцией:
  
  
  
   Переменная переменной принимает значение переменной и обрабатывает
   значение как имя переменной. Значение hello из приведённого примера
   станет именем переменной при обращении к переменной, которая хранит значение,
   через двойной знак доллара.
   То есть:
  
  
  
   Теперь дерево символов PHP хранит два определения переменных:
   переменная $a, которая содержит значение "hello",
   и переменная $hello, которая содержит значение "world".
   Поэтому инструкция:
  
  
  
   ...выведет то же, что и инструкция
  
  
  
   Обе инструкции создадут строку: hello world.
  
  
   Для работы с переменными переменных и массивами потребуется разрешить неоднозначность.
   Анализатору синтаксиса требуется знать, что имел в виду разработчик
   в записи $$a[1]: использовать $a[1] как переменную
   или $$a, а затем индекс [1] этой переменной.
   Синтаксис, который разрешит эту неоднозначность, выглядит вот так:
   ${$a[1]} для первого случая и ${$a}[1] для второго.
  
  
   Доступ к свойствам класса также получают через переменные имена свойств.
   Переменное имя свойства разрешается внутри области видимости, в которой
   вызывают свойство класса. Например, для выражения $foo->$bar
   PHP проверит присутствие в локальной области видимости переменной $bar,
   значение которой возьмёт как имя свойства объекта $foo.
   Это справедливо и тогда, когда через переменную $bar обращаются
   к элементу массива.
  
  
   Фигурные скобки также указывают, чтобы точно отделить название свойства.
   Скобки наиболее полезны, когда получают доступ к значениям внутри свойства,
   которое содержит массив, когда имя свойства состоит из нескольких частей,
   либо когда имя свойства содержит символы, которые иначе не
   действительны (например, из функции json_decode()
   или из модуля SimpleXML).
  
  
   
    Пример #1 Пример переменного имени свойства
    
<?php
class Foo
{
    public $bar = 'Я bar.';
    public $arr = array('Я A.', 'Я B.', 'Я C.');
    public $r   = 'Я r.';
}
$foo = new Foo();
$bar = 'bar';
$baz = ['foo', 'bar', 'baz', 'quux'];
echo $foo->$bar . "\n";
echo $foo->{$baz[1]} . "\n";
$start = 'b';
$end   = 'ar';
echo $foo->{$start . $end} . "\n";
$arr = 'arr';
echo $foo->{$arr[1]} . "\n";
echo $foo->{$arr}[1] . "\n";
?>
     
    
 Результат выполнения приведённого примера:
Я bar.
Я bar.
Я bar.
Я r.
Я B.
 
    
  
  Внимание
   
    Обратите внимание, переменные переменных нельзя использовать
    с суперглобальными массивами
    PHP. Переменная $this — тоже специальная переменная,
    на которую нельзя ссылаться динамически.