PHP /垃圾收集,取消设置变量

时间:2015-08-19 19:33:45

标签: php garbage-collection

有没有人对这种奇怪的PHP行为有解释? 基本上,我创建了一个变量$ number,而不是变量$num2,这是$number的引用。所以我认为他们将共享相同的内存位置。

但是当我取消设置$number时,它仍然输出..,我想如果我会使用一些gc命令,它会清除它,因为它看起来像堆行为。但它仍然无法正常工作。 :P

function sum(&$var) {
    $var++;
}
$number = 5;
$num2 = &$number;
sum($number);
echo $number; echo '<br>';
gc_enable();
gc_collect_cycles();
sleep(5);
unset($number);
echo $num2;

1 个答案:

答案 0 :(得分:0)

在PHP中取消设置引用另一个变量的变量时(这是你的情况),它只是断开连接这些变量的链接,但仍然是第二个变量中的值。

is described in the PHP docs

  

$ mainVar =“你好!”;
  $ linkedVar =&amp; $ mainVar;
  未设置($ mainVar);

因此,即使$mainVar未设置,$linkedVar也会保留该值。