Introduction
In PHP, it is possible to set variable name dynamically. Such a variable uses value of an existing variable as name. A variable variable is defined with two $ signs as prefix
Example
<?php
$var1="xyz"; //normal variable
$$var1="abcd";//variable variable
echo $var1 . "\n";
echo $$var1 . "\n";
echo "{$$var1} $xyz";
?>Output
This script produces following output
xyz abcd abcd abcd
Note that value of $$var1 is same as $xyz, xyz being value of $var1.
Numeric value of normal variable cannot be used as variable variable
Example
<?php $var1=100; //normal variable $$var1=200;//variable variable echo $var1 . "\n"; echo $$var1 . "\n"; echo $100; ?>
Output
When this script is executed, following result is displayed
PHP Parse error: syntax error, unexpected '100' (T_LNUMBER), expecting variable (T_VARIABLE) or '{' or '$' line 6It is also possible to define a variable variable in terms of an array subscript. In following example, a variable variable is defines using 0th element of a normal array
Example
<?php
$var1=array("aa","bb"); //normal variable
${$var1[0]}=10;//variable variable with array element
echo $var1[0] . "\n";
echo $aa . "\n";
echo ${$var1[0]} . "\n";
?>Output
This will produce following result −
aa 10 10
Class properties are also accessible using variable property names. This feature is useful when a propery name is made up of an array.
Example
<?php
var $u = "Architecture";
var $ugCourses = array("CSE","MECH","CIVIL");
$obj = new branches();
$courses = "ugCourses";
echo $obj->{$courses[0]} . "\n";
echo $obj->{$courses}[0] . "\n";
?>Output
This will produce following result −
Architecture CSE