php中引用符号(&)的使用详细介绍

/**
 * 是变量的情况;
 */
//& 符号引用,表示:使用了&,引用地址,表示两个变量指向了同一个内容,当改变$b时,内存中的内容被改变,$a的值被改变;
$a = 23;
$b = $a;
$b=44;
echo $a; //$a = 23;$c = &$a;
$c = 22;
echo $a; //$a = 22;


/**
 * 是函数的情况
 */
#2.1 函数的传值调用;
//通常情况下函数内是一个封闭的环境,函数内部是一个独立的环境,在某些特定场合下,需要函数的返回值被外部引用
//这个时候可以考虑使用& 符号;
function test_(&$a){
    $a =  $a + 100;
    echo $a;
}
$a = 22;
test_($a);
$a = $a +22;
echo "<pre>";
echo $a;  //打印144;

//2.2 函数的引用返回:表示将函数内部return返回的值的内存地址和被绑定的变量的内存地址都指向同一个位置;

function &demo(){
    static $c = 0;
    $c = $c + 1;
    echo $c;
    return $c;
}

echo "<hr>";

 demo(); //1;
 demo(); //2;
 $a = &demo(); //返回3,表示$a = 3,此时demo函数内部的$b和$a 的内存地址指向同一位置;

 $a = 5;  //$b = 5;
 demo();  //$b= 6
echo "<hr>";


/**
 * 对象的引用;
 */
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

//说明:对象的赋值过程其实是引用赋值,$b 和$c 都是指向同一个内存地址,PHP5中默认就是通过引用来调用对象,但是如果我们需要
//需要连个相同的对象,但指向不同的内存地址,可以使用__clone(),这个魔术方法;


//引用的作用
//如果程序比较大,引用同一个对象的变量比较多,并且希望用完该对象后手工清除它,个人建议用 "&" 方式,然后用$var=null的方式清除.
// 其它时候还是用php5的默认方式吧. 另外, php5中对于大数组的传递,建议用 "&" 方式, 毕竟节省内存空间使用。

//取消引用
//当你 unset 一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了。例如:
echo "<hr>";
$a = 1;
$b = &$a;
unset($b);
echo $a; //此时$a 还在 为1;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值