Необходимо создавать имя переменной динамически. Например, требуется дать переменным имена, совпадающие с именами полей в запросе к базе данных.
В PHP для применения синтаксиса переменных переменных в начало переменной, значение которой является требуемым именем переменной, добавляется символ $:
$animal = ' turtles ';
$turtles = 103;
print $$animal;
103
Код предыдущего примера печатает 103. Так как $animal = ' turtles ', то
переменная $$animal равна $turtles, которая, в свою очередь, равна 103.
Фигурные скобки позволяют построить более сложные выражения,
обозначающие имена переменных:
$stooges = array(' Moe ',' Larry ',' Curly');
$stooge_moe = ' Moses Horwitz ';
$stooge_larry = ' Louis Feinberg ';
$stooge_curly = ' Jerome Horwitz ';
foreach ($stooges as $s) {
print " $s's real name was ${' stooge_ '.strtolower($s)}.\n";
}
Moe's real name was Moses Horwitz.
Larry's real name was Louis Feinberg.
Curly's real name was Jerome Horwitz.
PHP вычисляет выражение, заключенное в фигурные скобки, и использует его в качестве имени переменной. Это выражение может даже включать в себя вызовы функций, например strtolower().
Переменные переменных удобны также для выполнения итераций по
переменным, имеющим похожие имена. Скажем, из базы данных запрашивается таблица, поля которой имеют имена title_1, title_2 и
т. д. Если требуется проверить, совпадает ли заголовок с одним из этих
имен, то проще всего выполнить цикл по этим именам, примерно так:
for ($i = 1; $i <= $n; $i++) {
$t = " title_$i ";
if ($title == $$t) { /* совпадение */ }
}
Несомненно, естественнее хранить значения в массиве, но если вы поддерживаете старый код, в котором применяются эти приемы (и этот код нельзя изменить), то переменные переменные будут полезны.
Синтаксис фигурных скобок также необходим для разрешения неопределенностей в элементах массива. Переменная переменная $$donkeys[12] может иметь два значения. Первое значение: «Возьмите то,
что находится в 12-м элементе массива $donkeys, и используйте в качестве имени переменной». Записывается это так: ${$donkeys[12]}. Второе значение: «Используйте содержимое скаляра $donkeys в качестве
имени массива и загляните в 12-й элемент этого массива». Запись:
${$donkeys}[12].
http://www.php.net/language.variables.variable, где находится документация по переменным переменным.