2014年10月12日

PHP可变变量,变量的引用

可变变量
有时候使用可变变量名很方便的,就是说,一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。比如:
可变变量必须是$挨在一起,不可使用$abc$hello

<?php
        $hello = "world";
        $$hello = "name";
        $$$hello = "age";
        $$$$hello = "sex";
        
        echo $hello;  //world
        echo "<br>";
        //不输出age
        echo $$hello;   //name
        echo "<br>";
        echo $$$hello;    //age
        echo "<br>";
        echo $world;      //name
        echo "<br>";
        echo $age;        //sex;

变量的引用
引用操作符&可以在关联赋值中使用,就像一个别名,使得变量指向了内存的相同地址

<?php
         $a=5;
         $b=&$a;
         echo $b;   //输出5
         $a=7;      
         echo $b;   //输出7

c语言可以把变量地址输出,在php中无法直接输出地址(echo &$a),即使把&$a赋值到$c,输出的结果还是变量值,非地址。
$c存的是指向a的指针,代表$a和$c捆绑在一起了

<?php
        $a = 10;
        $b = 20;
        
        $c = &$a;
        
        
        $a = 100;
        $c = 500;
        
        
        echo $a;
        echo "<br>";
        echo $c;

只有变量才有地址,也就是只有变量才能有应用
一个变量发生变化,另一个变量的值也会变化
在使用unset()函数时,如果有引用关系,只是理解除了这种引用关系,只删除一个名字,另一个还在
如果两个变量是引用关系,一个变,另一个也变,但如果其中一个引用,不是普通的值,而是一个新的引用,则改变引用关系

 <?php
         $a = 10;
         $b = &$a;
         $c = 100;
         $b = &$c;
         $b = 99;
         
         echo $a;
         echo "<br>";
         echo $b;
         echo "<br>"
         echo $c;