Variable variables
Sometimes it is convenient to be able to have variable variable
names. That is, a variable name which can be set and used
dynamically. A normal variable is set with a statement such as:
A variable variable takes the value of a variable and treats that
as the name of a variable. In the above example,
hello, can be used as the name of a variable
by using two dollar signs. i.e.
At this point two variables have been defined and stored in the
PHP symbol tree: $a with contents "hello" and
$hello with contents "world". Therefore, this
statement:
produces the exact same output as:
i.e. they both produce: hello world.
In order to use variable variables with arrays, you have to
resolve an ambiguity problem. That is, if you write
$$a[1] then the parser needs to know if you
meant to use $a[1] as a variable, or if you
wanted $$a as the variable and then the [1]
index from that variable. The syntax for resolving this ambiguity
is: ${$a[1]} for the first case and
${$a}[1] for the second.
Warning
Please note that variable variables cannot be used with PHP's
Superglobal arrays
within functions or class methods. The variable $this
is also a special variable that cannot be referenced dynamically.