PHP数组正在消耗殆尽

时间:2012-07-25 14:50:29

标签: php arrays generics garbage-collection

我在PHP中使用数组时有点奇怪。

$items = array();
$tools = json_decode($_GET['tools'],true);
foreach($tools as $key => $value)
{
   $items[$somevar][$anothervar] = $value;
}

然后我可以迭代$items

foreach($items as $key => $value)
{
  //Do Something
}

但奇怪的是,当我再次尝试使用$tools迭代foreach时,它会返回NULL

//Never Happens    
foreach($tools as $key => $value)
{
  //Do Something
}

这可能是由垃圾收集器引起的吗?

我的应用程序运行PHP 5.2.3,Linux CentOS,Apache 2.2。

3 个答案:

答案 0 :(得分:1)

不,我怀疑这与垃圾收集有关。

如果zval为零,则垃圾收集器仅删除refcount(PHP变量容器)。这意味着,只有当没有变量引用指向数据时,它才会被删除。

只要您不执行unset( $tools );,该变量就应该可用。

有关详细信息,请参阅http://php.net/features.gc.refcounting-basics.php

答案 1 :(得分:0)

$tools不是数组,它是一个对象。

将其更改为:

$tools = json_decode($_GET['tools'], true);

true参数将json解码为数组而不是对象。

更多信息:PHP Documantation

答案 2 :(得分:0)

是的,它不是一个数组,所以就像那样:

$tools->key // Return the value of your occurence