PHP 8从入门到精通(视频教学版)
上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)变量引用相当于给变量添加了一个别名,使用“&”来引用变量。其实两个变量名指的是同一个变量。就像是给同一个盒子贴了两个名字标签,两个名字标签指的是同一个盒子。