Кроме обычного манипулирования данными, РНР позволяет создавать переменные, идентификаторы которых (например, $foo — идентификатор) неизвестны до тех пор, пока сценарий не запущен. Эта концепция "переменных переменных" хотя и не применяется в ежедневной разработке, все же в некоторых случаях совершенно незаменима, как вы это увидите далее в книге, когда будут рассматриваться формы. Так выглядит синтаксис, применяемый в случаях, когда вы хотите обратиться к некоторому значению по имени переменной:
${<выражение>}
<выражение> может представлять любое допустимое выражение РНР, которое при вычислении возвращает значение, отвечающее описанным ранее правилам, регламентирующим имена переменных. Рассмотрим следующие две строки кода, каждая из которых манипулирует переменной $foo:
$foo = 5; ${"foo"}++; // Переменная $foo теперь равна 6 $my_var_name = "foo"; ${$my_var_name}++; ?>
Что произойдет при выполнении последней строки приведенного фрагмента? Если предположить, что она увеличит значение переменной $foo до 7, это будет так! Глядя на этот код, можно видеть, что $my_var_name содержит строку "foo". Когда выполняется следующая за этим строка, значение $my_var_name вычисляется и результат трактуется как имя переменной. То есть переменная $f oo увеличивается на единицу.