PHP变量内存分配问题记录整理
发布:smiling 来源: PHP粉丝网 添加日期:2020-07-13 15:39:25 浏览: 评论:0
今天碰到一个关于php变量内存分配的问题,记录一下,如下这段代码:
- $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的时候都不会互相影响了。
再看这段代码:
- 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都是指向的同一片区域,这样改任何一个,其余几个都会被改掉。
Tags: PHP内存分配
- 上一篇:关于JSON以及JSON在PHP中的应用技巧
- 下一篇:php中{}大括号是什么意思
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)