Иногда удобно иметь переменные как имена переменных. То есть имена переменных,
которые могут устанавливаться и использоваться динамически. Нормальная
переменная устанавливается примерно таким оператором:
Переменная переменная/variable variable принимает значение переменной и
рассматривает его как имя переменной. В предыдущем примере, hello может использоваться как
имя переменной с помощью двух знаков dollar. То есть:
После этого в дереве символов РНР определены две переменные: $a с содержимым "hello" и
$hello с содержимым "world". Следовательно, оператор
даст тот же вывод, что и
то есть оба они дадут на выходе: hello world
Чтобы использовать переменные переменные с массивами, вы должны разрешить
проблему неоднозначности. То есть, если вы записываете $$a[1], то разборщику необходимо знать,
будете ли вы использовать $a[1] как переменную, или вы хотите использовать $$a
как переменную, а затем как индекс [1] из этой переменной. Синтаксис для разрешения
этой неоднозначности таков: ${$a[1]} для первого случая и ${$a}[1] - для второго.
Пожалуйста отметьте, что переменные переменные не могут использоваться с новыми суперглобалами РНР.
Это значит, что вы не можете делать что-либо вроде ${$_GET}. Если вы ищете способ
работать с superglobals и старыми HTTP_*_VARS, вы можете попытаться
ссылаться на них.
|