我在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。
答案 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