访问数组内部的数组

时间:2013-07-09 20:17:12

标签: php arrays

尝试访问数组内的数组时,仅输出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 个答案:

答案 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,因为你的变量尚未初始化,但我想你确实在代码中初始化了它们,希望这会有所帮助。