www.adminn.cn
站长正能量分享网!

PHP变量内存分配问题记录整理

AD:阿里云服务器企业会员更优惠 腾讯云香港,韩国免备案服务器1.8折优惠

今天碰到一个关于php变量内存分配的问题,记录一下,如下这段代码: 

  1. $a = array (  
  2. 'str' => 1,  
  3. 'child' => 2  
  4. );  
  5.  
  6. $b = $a;  
  7. $b['child'] = $a;  
  8. $b['child']['str'] = 2;  
  9. echo $b['str'];  
  10. $b = null;  
  11. echo $a['str'];  

会输出什么呢,结果是11,$b=$a的时候其实并没有新分配内存,ab是指向的同一个区域,$b['child']=$a时,$b会先copy一份原来$a的内容,然后再修改,也就是说这时候$b和$a指向了不同的区域,再修改$a或者$b的时候都不会互相影响了。

再看这段代码: 

  1. class A  
  2. {  
  3. public $str = '';  
  4. public $child;  
  5. }  
  6.  
  7. $a = new A();  
  8. $b = $a;  
  9. $a->str = 1;  
  10. $a->child = 2;  
  11. $b->child = $a;  
  12. $b->child->str = 2;  
  13. echo $b->str;  
  14. $b = null;  
  15. echo $a->str;  

又会输出什么呢,结果是22,根据实际情况来判断,$b->child=$a的时候,并没有像数组那样,重新copy一份,ab以及a->child都是指向的同一片区域,这样改任何一个,其余几个都会被改掉。 

模板优惠价: (点击购买)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《PHP变量内存分配问题记录整理》
文章链接:https://www.adminn.cn/news/8475.html
本站资源模板仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。2021.5月起,网站调整,暂不再分享免费模板。谢谢理解

Adminn.Cn 站长分享圈

帝国CMS精品模板腾讯云优惠券,代金券

2次开发,学习研究使用!扫码支付后联系QQ677123发货!

支付宝扫一扫打赏