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文件下载类
Dec 06 PHP
thinkPHP的Html模板标签使用方法
Nov 13 PHP
基于php中使用excel的简单介绍
Aug 02 PHP
php中字符串和正则表达式详解
Oct 23 PHP
四种php中webservice实现的简单架构方法及实例
Feb 03 PHP
php中header跳转使用include包含解决参数丢失问题
May 08 PHP
启用Csrf后POST数据时出现的400错误
Jul 05 PHP
joomla数据库操作示例代码
Jan 06 PHP
php自定义函数转换html标签示例
Sep 29 PHP
Laravel中间件实现原理详解
Oct 09 PHP
PHP连接MySQL进行增、删、改、查操作
Feb 19 PHP
PHP实现的敏感词过滤方法示例
Mar 06 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的历史和优缺点
2006/10/09 PHP
投票管理程序
2006/10/09 PHP
PHP has encountered an Access Violation
2007/01/15 PHP
PHP在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
2011/08/03 PHP
PHP类与对象中的private访问控制的疑问
2012/11/01 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
CI框架实现cookie登陆的方法详解
2016/05/18 PHP
基于php判断客户端类型
2016/10/14 PHP
javascript XML数据显示为HTML一例
2008/12/23 Javascript
js DOM模型操作
2009/12/28 Javascript
Firefox+FireBug使JQuery的学习更加轻松愉快
2010/01/01 Javascript
js中有关IE版本检测
2012/01/04 Javascript
document.createElement()用法及注意事项(ff下不兼容)
2013/03/13 Javascript
onkeypress字符按键兼容所有浏览器使用介绍
2013/04/24 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
JS简单模拟触发按钮点击功能的方法
2015/11/30 Javascript
jQuery常用知识点总结以及平时封装常用函数
2016/02/23 Javascript
简单实现js放大镜效果
2017/07/24 Javascript
vue.js实现简单轮播图效果
2017/10/10 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
vue+axios全局添加请求头和参数操作
2020/07/24 Javascript
Vue js with语句原理及用法解析
2020/09/03 Javascript
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
Python实现列表转换成字典数据结构的方法
2016/03/11 Python
用Python登录好友QQ空间点赞的示例代码
2017/11/04 Python
浅谈Python中的zip()与*zip()函数详解
2018/02/24 Python
python抽取指定url页面的title方法
2018/05/11 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
python离线安装外部依赖包的实现
2020/02/13 Python
中小学校园安全广播稿
2014/09/29 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
2014年人民调解工作总结
2014/12/08 职场文书
处级干部考察材料
2014/12/24 职场文书
家长对孩子的寄语
2015/02/26 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书