在PHP中,可以动态设置变量名。这样的变量使用现有变量的值作为名称。变量变量以两个$符号作为前缀定义
<?php $var1="xyz"; //normal variable $$var1="abcd";//variable variable echo $var1 . "\n"; echo $$var1 . "\n"; echo "{$$var1} $xyz"; ?>
输出结果
该脚本产生以下输出
xyz abcd abcd abcd
请注意,$$var1的值与$xyz相同,xyz是$var1的值。
普通变量的数值不能用作变量
<?php $var1=100; //normal variable $$var1=200;//variable variable echo $var1 . "\n"; echo $$var1 . "\n"; echo $100; ?>
输出结果
执行该脚本后,显示以下结果
PHP Parse error: syntax error, unexpected '100' (T_LNUMBER), expecting variable (T_VARIABLE) or '{' or '$' line 6
也可以根据数组下标定义变量。在下面的示例中,使用普通数组的第0个元素定义变量变量
<?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"; ?>
输出结果
这将产生以下结果-
aa 10 10
也可以使用变量属性名称访问类属性。当属性名称由数组组成时,此功能很有用。
<?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"; ?>
输出结果
这将产生以下结果-
Architecture CSE