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

 更新时间:2013年11月27日 17:23:20   作者:  
今天碰到一个关于php变量内存分配的问题,下面记录一下,感兴趣的额朋友不要错过
今天碰到一个关于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 microtime获取浮点的时间戳

    php microtime获取浮点的时间戳

    看到别人的源码中用microtime(true),查了下手册,原来从PHP 5.0.0 开始,microtime增加了这个参数。
    2010-02-02
  • simplehtmldom Doc api帮助文档

    simplehtmldom Doc api帮助文档

    simple_html_dom.php 一款像jquery一样好用的html/xml 分析利器,一个PHP处理HTML的利器,很像jquery,需要的朋友可以参考下
    2012-03-03
  • PHP 数组操作详解【遍历、指针、函数等】

    PHP 数组操作详解【遍历、指针、函数等】

    这篇文章主要介绍了PHP 数组操作,结合实例形式详细分析了PHP数组遍历、指针、数组常用函数等相关原理、使用技巧与操作注意事项,需要的朋友可以参考下
    2020-05-05
  • php中数组最简单的使用方法

    php中数组最简单的使用方法

    在本篇文章里小编给大家整理了一篇关于php中数组最简单的使用方法,大家可以跟着学习下。
    2020-12-12
  • PHP生成各种随机验证码的方法总结【附demo源码】

    PHP生成各种随机验证码的方法总结【附demo源码】

    这篇文章主要介绍了PHP生成各种随机验证码的方法,结合具体实例形式总结分析了php常用的生成验证码操作相关技巧,并附带demo源码供读者下载参考,需要的朋友可以参考下
    2017-06-06
  • PHP判断一个变量是否为整数、正整数的方法示例

    PHP判断一个变量是否为整数、正整数的方法示例

    这篇文章主要给大家介绍了关于PHP判断一个变量是否为整数、正整数的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用PHP具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • PHP实现随机发扑克牌

    PHP实现随机发扑克牌

    这篇文章主要为大家详细介绍了PHP实现随机发扑克牌,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • PHP封装PDO实现操作MySql数据库

    PHP封装PDO实现操作MySql数据库

    数据库操作类可以封装数据库连接和操作,使代码更易于维护和扩展,这篇文章主要为大家详细介绍了PHP如何封装操作类PDO从而实现操作MySql数据库的功能,需要的可以了解下
    2023-10-10
  • phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)

    phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)

    今天帮客户配置phpmyadmin,一直有“链接表的附加功能尚未激活”的问题,登陆phpmyadmin后,会在底部显示“链接表的附加功能尚未激活。要查出原因,请点击此处。”的提示。
    2012-03-03
  • PHP实现动态删除XML数据的方法示例

    PHP实现动态删除XML数据的方法示例

    这篇文章主要介绍了PHP实现动态删除XML数据的方法,在前面介绍的Message_XML类基础上进行改进,增加了xml删除功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2018-03-03

最新评论