PHP变量变量

介绍

在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