`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 呢?
第一次运行 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)方面的资料。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。