1

我有一个关联数组,我从 json 解码出来json_decode second value true,看起来像

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

)

但是由于某种原因,当我执行 $array[0] 时,我得到了空值?如何按索引获取数组?不是键名?

4

4 回答 4

2

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

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

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

reset($array);
$first_key = key($array);
print_r($array[$first_key]);
于 2013-01-17T22:52:21.873 回答
2

array_values()将为您提供数组中的所有值,其中键重新编号为0.

于 2013-01-17T22:53:01.880 回答
0

这是设计使然。. . 您的 JSON 使用了一个密钥(显然test),其中包含一个 JSON 对象。执行json_decode. 您不能按索引访问,尽管您可以使用foreach.

从您的评论中,听起来您想从关联数组中访问上一个和下一个元素。我不知道直接执行此操作的方法,但一种骇人听闻的方法如下:

$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];

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

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

于 2013-01-17T22:52:41.763 回答
0

You could use current.

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

var_dump($first);
于 2013-01-17T22:51:03.257 回答