
上QQ阅读APP看书,第一时间看更新
3.4.2 可变变量与变量的引用
一般的变量很容易理解,但是有两个概念比较容易混淆,就是可变变量和变量的引用。
可变变量是一种特殊的变量,它允许动态改变一个变量名称。其工作原理是该变量的名称由另一个变量的值来确定,实现过程就是在变量的前面再多加一个美元符号“$”。
在一个变量前加上“&”,然后赋值给另一个变量,这就是变量的引用赋值。
通过下面的例子对它们进行说明。
【例3.4】(实例文件:源文件\ch03\3.4.php)
<?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所示。

图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)变量引用相当于给变量添加了一个别名,使用“&”来引用变量。其实两个变量名指的是同一个变量。就像是给同一个盒子贴了两个名字标签,两个名字标签指的是同一个盒子。