PHP Manual
Prev | Chapter 8. Variables | Next

# 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:

    <?php
    $a = "hello";
    ?>

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.

    <?php
    $$a = "world";
    ?>

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:

    <?php
    echo "$a ${$a}";
    ?>

produces the exact same output as:

    <?php
    echo "$a $hello";
    ?>

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. This means you cannot do things like `${$_GET}`. If you are looking for a way to handle availability of superglobals and the old `HTTP_*_VARS`, you might want to try referencing them.

Prev | Home | Next
Variable scope | Up | Variables from outside PHP