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 加密与解密的斗争
Apr 17 PHP
PHP学习笔记之数组篇
Jun 28 PHP
浅析php中抽象类和接口的概念以及区别
Jun 27 PHP
关于php内存不够用的快速解决方法
Oct 26 PHP
php cookie中点号(句号)自动转为下划线问题
Oct 21 PHP
php中数据库连接方式pdo和mysqli对比分析
Feb 25 PHP
php中preg_match的isU代表什么意思
Oct 01 PHP
分享PHP计算两个日期相差天数的代码
Dec 23 PHP
AES加解密在php接口请求过程中的应用示例
Oct 26 PHP
php与c 实现按行读取文件实例代码
Jan 03 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 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投票系统防刷票判断流程分析
2012/02/04 PHP
8个PHP程序员常用的功能汇总
2014/12/18 PHP
php实现读取和写入tab分割的文件
2015/06/01 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
2016/07/20 PHP
JS 常用校验函数
2009/03/26 Javascript
window.location.hash 属性使用说明
2010/03/20 Javascript
javascript+mapbar实现地图定位
2010/04/09 Javascript
动态调用CSS文件的JS代码
2010/07/29 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
js弹出确认是否删除对话框
2014/03/27 Javascript
JavaScript+html5 canvas绘制渐变区域完整实例
2016/01/26 Javascript
jQuery插件实现文字无缝向上滚动效果代码
2016/02/25 Javascript
js中遍历对象的属性和值的方法
2016/07/27 Javascript
详解ECharts使用心得总结
2016/12/06 Javascript
jquery表单提交带错误信息提示效果
2017/03/09 Javascript
angularjs实现搜索的关键字在正文中高亮出来
2017/06/13 Javascript
React-router4路由监听的实现
2018/08/07 Javascript
[47:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第二场 3月4日
2021/03/11 DOTA
Python 常用 PEP8 编码规范详解
2017/01/22 Python
Python模拟登陆实现代码
2017/06/14 Python
python pandas实现excel转为html格式的方法
2018/10/23 Python
python生成n个元素的全组合方法
2018/11/13 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
对django2.0 关联表的必填on_delete参数的含义解析
2019/08/09 Python
python tkinter组件摆放方式详解
2019/09/16 Python
Anaconda详细安装步骤图文教程
2020/11/12 Python
cookies应对python反爬虫知识点详解
2020/11/25 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
纽约现代艺术博物馆商店:MoMA STORE(室内家具和杂货商品)
2016/08/02 全球购物
应届大专毕业生个人自荐信
2013/09/22 职场文书
2014年五四青年节活动方案
2014/03/29 职场文书
商家认证委托书格式
2014/10/16 职场文书
2014年人事工作总结范文
2014/11/19 职场文书
老公婚前保证书
2015/02/28 职场文书
Javascript之datagrid查询详解
2021/09/15 Javascript