php函数的引用返回

<?php  
function &test(){  
    static $b = 1;  
    $b += 2;  
    return $b;  
}  
  
$a = &test();  
$a =8;  
$c = test();  
echo $c;  
exit; 

$a=test()方式调用函数,只是将函数的值赋给$a而已,

而$a做任何改变都不会影响到函数中的$b而通过$a=&test()方式调用函数呢,

他的作用是将return $b中的$b变量的内存地址与$a变量的内存地址指向了同一个地方,

即产生了相当于这样的效果($a=&b;)

所以改变$a的值也同时改变了$b的值所以在执行了 $a=&test();  $a=8;  以后,$c的值变为了10

    class a{  
        var $abc="ABC";  
    }  
      
    $b=new a;  
    $c=$b;  
    echo $b->abc;    //这里输出ABC  
    echo $c->abc;    //这里输出ABC  
    $b->abc="DEF";  
    echo $c->abc;    //这里输出DEF  

以上代码是在PHP5中的运行效果,在PHP5中对象的复制是通过引用来实现的。

上列中$b=new a; $c=$b; 其实等效于$b=new a; $c=&$b;
PHP5中默认就是通过引用来调用对象,但有时你可能想建立一个对象的副本,

并希望原来的对象的改变不影响到副本 .

为了这样的目的,PHP定义了一个特殊的方法,称为__clone。

原文地址:https://www.cnblogs.com/lbnnbs/p/5923997.html