2013-07-09 69 views
-1

當試圖訪問數組中的數組時,只輸出NULL。 我的代碼:訪問數組內部的數組

$aStats = array(); 
$aStats['hd'] = array(); 
$aStats['hd'][] = array 
(
'dev' => $device, 
'total' => $total, 
'used' => $used, 
'free' => $free, 
'used_perc' => $used_perc, 
'mount' => $folder 
); 
echo $aStats['hd']['free']; 

當使用json_encode,正確顯示的值:

die(json_encode($aStats)); 

哪裏是我的錯?

回答

2

替換這些行:

$aStats['hd'] = array(); 
$aStats['hd'][] = array 

有了這個:

$aStats['hd'] = array 

你似乎是訪問您的陣列($aStats['hd']['free'];)彷彿hd值是一個關聯數組,但使用[]創建數組中的新整數索引,並將值存儲在該索引中。 Joe Walker的答案顯示了發生的情況,您有一個關聯數組指向指向另一個關聯數組的索引數組,而不是您建議在echo語句中嘗試使用的關聯數組。

+0

非常感謝:) – niklaskar

1

這是一個實用小竅門,讓你找出是問題伊斯利,所有你需要做的是:

var_dump($aStats); 

這將輸出:

array (size=1) 
    'hd' => 
    array (size=1) 
    0 => 
    array (size=6) 
     'dev' => string 'SomeDevice' (length=10) 
     'total' => string '10000' (length=5) 
     'used' => boolean true 
     'free' => boolean false 
     'used_perc' => string 'none' (length=4) 
     'mount' => string '/some/directory/here/' (length=21) 

現在你知道你可以訪問這個元素使用

$aStats['hd'][0]['free']; 

這將返回null在你的問題,因爲你的變量不是你初始化,但我想你已經在代碼中初始化了它們,希望這有助於。

+0

謝謝,現在我終於真正明白我做錯了什麼,以及我今後如何防止它!:) – niklaskar