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 相关文章推荐
探讨多键值cookie(php中cookie存取数组)的详解
Jun 06 PHP
php实现文件编码批量转换
Mar 10 PHP
php中实现可以返回多个值的函数实例
Mar 21 PHP
基于php的微信公众平台开发入门实例
Apr 15 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
Apr 21 PHP
android上传图片到PHP的过程详解
Aug 03 PHP
PHP中的Trait 特性及作用
Apr 03 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
Nov 14 PHP
CI框架使用composer安装的依赖包步骤与方法分析
Nov 21 PHP
PHP 实现页面静态化的几种方法
Jul 23 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
Mar 28 PHP
php封装的pdo数据库操作工具类与用法示例
May 08 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自定文件保存session的方法
2014/12/10 PHP
php常用表单验证类用法实例
2015/06/18 PHP
Laravel 在views中加载公共页面的实现代码
2019/10/22 PHP
thinkphp5框架路由原理与用法详解
2020/02/11 PHP
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
Jquery选中或取消radio示例
2013/09/29 Javascript
jquery 将当前时间转换成yyyymmdd格式的实现方法
2016/06/01 Javascript
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
vue-cli history模式实现tomcat部署报404的解决方式
2019/09/06 Javascript
JS实现瀑布流效果
2020/03/07 Javascript
Python实现股市信息下载的方法
2015/06/15 Python
基于Python实现的ID3决策树功能示例
2018/01/02 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
python读取Excel实例详解
2018/08/17 Python
详解python分布式进程
2018/10/08 Python
opencv导入头文件时报错#include的解决方法
2019/07/31 Python
Django对models里的objects的使用详解
2019/08/17 Python
Python的Lambda函数用法详解
2019/09/03 Python
Python描述符descriptor使用原理解析
2020/03/21 Python
150行python代码实现贪吃蛇游戏
2020/04/24 Python
scrapy中如何设置应用cookies的方法(3种)
2020/09/22 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
奥地利体育网上商店:Gigasport
2019/10/09 全球购物
建筑设计学生的自我评价
2014/01/16 职场文书
《北京的春节》教学反思
2014/04/07 职场文书
大学计划书范文800字
2014/08/14 职场文书
工资收入证明样本(5篇)
2014/09/16 职场文书
2014年大学生党员自我评议
2014/09/22 职场文书
收款授权委托书
2014/10/02 职场文书
五年级学生评语大全
2014/12/26 职场文书
建筑技术负责人岗位职责
2015/04/13 职场文书
2016抗战胜利71周年红领巾广播稿
2015/12/18 职场文书
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python
JavaScript获取URL参数的方法分享
2022/04/07 Javascript