2012-07-25 49 views
0

我在PHP中使用了數組中的奇怪事物。PHP Array正在消耗

$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 
} 

但怪異的一部分,當我再次嘗試通過$toolsforeach迭代,它返回NULL

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

難道這是由垃圾收集器造成的嗎?

我的應用程序運行於PHP 5.2.3,Linux CentOS,Apache 2.2。

+0

中東代碼段不包含$項目。錯誤? – 2012-07-25 14:53:06

+1

你能否在兩個foreach之間特別提供更多的代碼? – neworld 2012-07-25 14:53:10

+0

@neworld這些部分之間只有一些HTML – Burimi 2012-07-25 14:54:37

回答

1

沒有,我懷疑,這與垃圾收集的事情。

如果refcount爲零,則垃圾收集器僅刪除zval(PHP變量容器)。這意味着,只有當沒有變量引用指向數據時,它纔會被刪除。

只要你不做unset($tools);,變量應該是可用的。

有關詳細信息,請參閱http://php.net/features.gc.refcounting-basics.php

0

$tools不是一個數組,它是一個對象。

它變化到這樣的:

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

true參數的JSON解碼成一個陣列,而不是一個對象。

這裏更多:PHP Documantation

+0

Sory,我錯誤地輸入了問題,請參閱EDITS – Burimi 2012-07-25 14:55:03

+0

仍然應該添加真實的 – 2012-07-25 15:00:21

0

是的,它不是一個數組,所以它是這樣工作的:

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

嘗試訪問這樣的數組會發出應該是的通知。因此Cody注意到這是不太可能的 – karka91 2012-07-25 15:22:05