PHP json_decode数组无法检索数字索引?

时间:2013-01-17 22:48:15

标签: php json phpunit

我有一个关联的数组,我已经从json json_decode second value true解码并且看起来像

Array (
    [test] => Array
        (
            [start] => 1358766000
            [end] => 1358775000
            [start_day] => 21
            [end_day] => 21
        )

)

但出于某些原因,当我执行$ array [0]时,我得到null?如何通过索引获取数组?不是通过密钥名称?

4 个答案:

答案 0 :(得分:2)

数组的第一级不是数字,它是一个关联数组。你需要这样做:

$array['test']['start']

或者,要获得第一个元素:

reset($array);
$first_key = key($array);
print_r($array[$first_key]);

答案 1 :(得分:2)

array_values()将为您提供数组中的所有值,其中密钥从0重新编号。

答案 2 :(得分:0)

您可以使用current

$first = current($array); // get the first element (in your case, 'test')

var_dump($first);

答案 3 :(得分:0)

这是设计的。 。 。你的JSON使用了一个密钥(显然是test),它包含一个JSON对象。执行json_decode时会保留密钥。您无法通过索引访问,但您可以使用foreach循环遍历整个事件。

从您的评论中,您似乎想要从关联数组中访问上一个和下一个元素。我不知道直接这样做的方法,但是一种hackish方式如下:

$testArr = array('a'=>'10', 'b'=>'2', 'c'=>'4');
// get numeric index of the element of interest
$keys = array_keys($testArr);
$i = array_search('b', $keys);
// get key of next element
$nextElementKey = $keys[$i+1];
// next element value
$nextElementValue = $testArry[$nextElementKey];
// get key of previous element
$prevElementKey = $keys[$i-1];
// prev value
$[prevElementValue = $testArry[$prevElementKey];

您可能希望在上一个和下一个键计算周围添加一些错误检查来处理第一个和最后一个值。

如果您不关心密钥中的数据,使用array_keys的Ignacio解决方案效率会更高。