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


Posted in PHP onNovember 27, 2013

今天碰到一个关于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都是指向的同一片区域,这样改任何一个,其余几个都会被改掉。

可是PHP为啥要设计成这样呢。

PHP 相关文章推荐
PHP安全配置
Oct 09 PHP
基于php和mysql的简单的dao类实现crud操作功能
Jan 27 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
Feb 13 PHP
php实现aes加密类分享
Feb 16 PHP
将php数组输出html表格的方法
Feb 24 PHP
thinkphp中ajax与php响应过程详解
Dec 08 PHP
php简单统计字符串单词数量的方法
Jun 19 PHP
如何实现php图片等比例缩放
Jul 28 PHP
php 读取输出其他文件的实现方法
Jul 26 PHP
php解决DOM乱码的方法示例代码
Nov 20 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
Feb 13 PHP
Laravel5框架自定义错误页面配置操作示例
Apr 17 PHP
php遍历文件夹所有文件子文件夹函数代码
Nov 27 #PHP
PHP根据IP地址获取所在城市具体实现
Nov 27 #PHP
php编写的简单页面跳转功能实现代码
Nov 27 #PHP
关于JSON以及JSON在PHP中的应用技巧
Nov 27 #PHP
XAMPP安装与使用方法详细解析
Nov 27 #PHP
浅析echo(),print(),print_r(),return之间的区别
Nov 27 #PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
Nov 27 #PHP
You might like
php实现遍历目录并删除指定文件中指定内容
2015/01/21 PHP
php简单定时执行任务的实现方法
2015/02/23 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
windows平台中配置nginx+php环境
2015/12/06 PHP
thinkPHP框架实现的短信接口验证码功能示例
2018/06/20 PHP
jqGrid jQuery 表格插件测试代码
2011/08/23 Javascript
jquery入门—访问DOM对象方法
2013/01/07 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
2014/03/19 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
node.js中的fs.fchmodSync方法使用说明
2014/12/16 Javascript
JavaScript动态修改弹出窗口大小的方法
2015/04/06 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
JavaScript文本框脚本编写的注意事项
2016/01/25 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
2017/01/05 Javascript
JavaScript实现换肤功能
2017/09/15 Javascript
JS计算输出100元钱买100只鸡问题的解决方法
2018/01/04 Javascript
Javascript执行上下文顺序的深入讲解
2020/11/04 Javascript
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
python实现文件分组复制到不同目录的例子
2014/06/04 Python
极简的Python入门指引
2015/04/01 Python
python读取oracle函数返回值
2016/07/18 Python
python 网络编程详解及简单实例
2017/04/25 Python
Python实现备份MySQL数据库的方法示例
2018/01/11 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
python3将视频流保存为本地视频文件
2018/06/20 Python
pytorch-RNN进行回归曲线预测方式
2020/01/14 Python
利用python在excel中画图的实现方法
2020/03/17 Python
Python基于paramunittest模块实现excl参数化
2020/04/26 Python
html5中canvas图表实现柱状图的示例
2017/11/13 HTML / CSS
国际贸易毕业生求职信范文
2014/02/21 职场文书
产品销售计划书
2014/05/04 职场文书
师范类求职信
2014/06/21 职场文书
工作所在部门证明
2014/09/21 职场文书
教师批评与自我批评范文
2014/10/15 职场文书
基督教追悼会答谢词
2015/09/29 职场文书
解决SpringBoot文件上传临时目录找不到的问题
2021/07/01 Java/Android