$var = "hello";
Now let's say you want a variable whose name is the
value of the $var variable. You can do that like
this:
$$var = "World";
PHP parses $$var by first dereferencing the
innermost variable, meaning that $var becomes
"hello". The expression that's
left is $"hello", which is just
$hello. In other words, we have just created a new
variable named hello and assigned it the value
"World". You can nest dynamic variables to an
infinite level in PHP, although once you get beyond two levels, it
can be very confusing for someone who is trying to read your code.
There is a special syntax for using dynamic variables, and any other
complex variable, inside quoted strings in PHP:
echo "Hello ${$var}";
This syntax also helps resolve an ambiguity that occurs when variable
arrays are used. Something like $$var[1] is
ambiguous because it is impossible for PHP to know which level to
apply the array index to. ${$var[1]} tells PHP to
dereference the inner level first and apply the array index to the
result before dereferencing the outer level.
${$var}[1], on the other hand, tells PHP to apply
the index to the outer level.
Initially, dynamic variables may not seem that useful, but there are
times when they can shorten the amount of code you need to write to
perform certain tasks. For example, say you have an associative array
that looks like:
$array["abc"] = "Hello";
$array["def"] = "World";