尝试访问数组内的数组时,仅输出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 ) );
我的错误在哪里?
答案 0 :(得分:2)
替换这些行:
$aStats['hd'] = array();
$aStats['hd'][] = array
有了这个:
$aStats['hd'] = array
您似乎正在访问您的数组($aStats['hd']['free'];
),好像hd
的值是关联数组,但使用[]
在数组中创建一个新的整数索引,并且存储该索引中的值 。 Joe Walker的答案显示了会发生什么,你有一个关联数组指向一个指向另一个关联数组的索引数组,而不是你建议你试图在echo
语句中使用的关联关联数组。 / p>
答案 1 :(得分: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,因为你的变量尚未初始化,但我想你确实在代码中初始化了它们,希望这会有所帮助。