一般的变量很容易理解,但是有两个概念比较容易混淆,就是可变变量和变量的引用。
可变变量是一种特殊的变量,它允许动态改变一个变量名称。其工作原理是该变量的名称由另一个变量的值来确定,实现过程就是在变量的前面再多加一个美元符号“$”。
在一个变量前加上“&”,然后赋值给另一个变量,这就是变量的引用赋值。
通过下面的例子对它们进行说明。
【例3.4】
<?php
$aa = "bb"; // 定义变量$aa并赋值
$bb = "征蓬出汉塞,归雁入胡天。"; //定义变量$bb并赋值
echo $aa; // 输出变量$aa
echo "<br/>";
echo $$aa; //通过可变变量输出变量$bb的值
$bb = "大漠孤烟直,长河落日圆。"; //重新给变量$bb赋值
echo "<br/>";
echo $$aa;
echo "<br/>";
$a = 100;
$b = 200;
echo $a;
echo "<br/>";
echo $b;
echo "<br/>";
$b = &$a; //变量的引用
echo $a;
echo "<br/>";
echo $b;
$b = 300;
echo "<br/>";
echo $a;
echo "<br/>";
echo $b;
?>
本程序运行结果如图3-4所示。
【案例分析】
1)在代码的第一部分,$aa被赋值bb。若$aa相当于bb,则$$aa相当于$bb。所以当$$aa被赋值为“征蓬出汉塞,归雁入胡天。”时,打印$bb就得到“征蓬出汉塞,归雁入胡天。”。反之,当$bb变量被赋值为“大漠孤烟直,长河落日圆。”时,打印$$aa同样得到“大漠孤烟直,长河落日圆。”。这就是可变变量。
(2)在代码的第二部分里,$a被赋值100,然后通过“&”引用变量$a并赋值给$b。这一步的实质是,给变量$a添加了一个别名$b。所以打印时,$a和$b都得出原始赋值100。由于$b是别名,和$a指的是同一个变量,因此当$b被赋值300后,$a和$b都得到新值300。
(3)可变变量其实是允许改变一个变量的变量名,允许使用一个变量的值作为另一个变量的名。
(4)变量引用相当于给变量添加了一个别名,使用“&”来引用变量。其实两个变量名指的是同一个变量。就像是给同一个盒子贴了两个名字标签,两个名字标签指的是同一个盒子。