开发者社区 问答 正文

php变量与对象的疑问,求解

`class a {}
for ($i=0; $i < 3; $i++) {

$a = new a;
var_dump($a);
echo "<br/>";

}`

输出结果:
object(a)#1 (0) { }
object(a)#2 (0) { }
object(a)#1 (0) { }

我想问为什么是 #1,#2,#1 呢?

展开
收起
落地花开啦 2016-06-16 17:16:59 1894 分享 版权
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    第一次运行 new a,新建了一个对象。
    第二次运行new a,又新建了一个对象。
    然后重新赋值给$a之后,第一个对象没用了,就回收了。
    然后回收留出来的坑,就留给第三次运行new a产生的对象。
    你可以实验下,加了 unset后就一致了

    `class a {}
    for ($i=0; $i < 3; $i++) {

    $a = new a;
    var_dump($a);
    echo "<br/>";
    unset($a);

    }
    `
    深入的话,可以找GC(Garbage collection)方面的资料。

    2019-07-17 19:41:27
    赞同 展开评论
问答分类:
PHP
问答地址: