-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 ) );

我的错误在哪里?

4

2 回答 2

2

替换这些行:

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

有了这个:

$aStats['hd'] = array

您似乎正在访问您的数组 ( $aStats['hd']['free'];),就好像 的值hd是关联数组一样,但 using[]在数组中创建了一个新的整数索引,并将值存储在该索引中。Joe Walker 的回答显示了发生的情况,即您有一个关联数组指向一个索引数组,该索引数组指向另一个关联数组,而不是您建议您在echo语句中使用的关联数组。

于 2013-07-09T21:21:33.200 回答
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 ,因为您的变量尚未初始化,但我猜您确实在代码中对它们进行了初始化,希望这会有所帮助。

于 2013-07-09T20:45:05.517 回答