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。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值