PHP传引用赋值底层的变化

$a = 3;
$b = &$a;//传引用,即地址赋值

使用xdebug_debug_zval('a');
使用xdebug_debug_zval('b');
运行结果为:
a:(refcount=2,is_ref=1)=3
b:(refcount=2,is_ref=1)=3
我们发现,当我们传引用赋值的时候,首先refcount变为了2,因为$b 去引用,同时is_ref变为了1,
可以把引用看做是把这个变量的内存地址给赋值过来了

 

然后我们再给$b赋值为5,$b = 5;因为$b指向一个地址,此时结构体不会再分裂了,而是会直接改变结构体的zvalue的值

此时再去echo $a;结果为5
测试:
$a = 3;
$b = &$a;//传引用,即地址赋值
$b = 5;
使用xdebug_debug_zval('a');
使用xdebug_debug_zval('b');
运行结果为:
a:(refcount=2,is_ref=1)=5
b:(refcount=2,is_ref=1)=5

 

转载于:https://www.cnblogs.com/lxhyty/p/11307940.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值