源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2022-06-18 12:20 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:PHP变量内存分配问题记录整理
今天碰到一个关于php变量内存分配的问题,记录一下。 如下这段代码:
[u]复制代码[/u] 代码如下:
$a = array ( 'str' => 1, 'child' => 2 ); $b = $a; $b['child'] = $a; $b['child']['str'] = 2; echo $b['str']; $b = null; echo $a['str'];
会输出什么呢,结果是11,$b=$a的时候其实并没有新分配内存,ab是指向的同一个区域,$b['child']=$a时,$b会先copy一份原来$a的内容,然后再修改,也就是说这时候$b和$a指向了不同的区域,再修改$a或者$b的时候都不会互相影响了。 再看这段代码:
[u]复制代码[/u] 代码如下:
class A { public $str = ''; public $child; } $a = new A(); $b = $a; $a->str = 1; $a->child = 2; $b->child = $a; $b->child->str = 2; echo $b->str; $b = null; echo $a->str;
又会输出什么呢,结果是22,根据实际情况来判断,$b->child=$a的时候,并没有像数组那样,重新copy一份,ab以及a->child都是指向的同一片区域,这样改任何一个,其余几个都会被改掉。 可是PHP为啥要设计成这样呢。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部