php引用变量这样理解最简单

php引用变量是为了使用不同的变量名字来访问同一个变量内容。其使用方法就是在变量或者函数、对象等前面加上&符号。
php引用变量怎么理解

<?php
$a=1;
$b=$a;
$a=2;
echo $b;//输出结果为1

上面的程序很简单大家都能看懂,

<?php
$a=1;
$b=&$a;
$a=2;
echo $b;//输出结果为2

对比两段代码你会发现区别,第二段代码对$b赋值的时候使用了引用变量$b=&$a,也就是多了一个符号&,但是结果却截然不同。
我们对$b赋值的时候,$b的值应该等于$a的值1,随后我们对$a重新赋值为2,但是没有对$b进行赋值操作,那么为什么$b的值会发生变化呢?
当我们定义变量的时候,php会在内存中开辟一块空间来存储变量,而由于php中COW机制(copy on write)的存在,$b=$a操作并不会给$b开辟空间,而是将指针指向$a的内存空间。在$a=2赋值操作中,由于COW,$a会重新复制出一块内存空间,所以$a的改变并不会影响$b的值,因为它们是两个内存空间。而在使用了引用变量之后,$b会一直指向$a的内存空间,所以$b的值会和$a一起变化。
简单的说就是,内存空间就是一个房子,$a的值就是房子里的东西,而引用变量就是在$a指向的房子上再开辟一扇门,从此$b的值也是房子里的东西,因为两个人指向的是同一个房子,所以“值”当然也是一样的喽。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值