计算JSON数组的长度并访问PHP中的json元素

时间:2015-02-17 13:19:14

标签: php arrays json

如何访问json sessionInfo和json数组的长度。这是我的JSON数组:

  {
"data": [
    {
        "sessionInfo": {
            "sessionUserId": 1,
            "startTime": "1418106218946",
            "endTime": "1418106218946"
        },
        "observations": [
            {
                "obLocation": "location1",
                "obHcwType": "hcwtype1",
                "obMoment": "moment1",
                "obItem": "item1"
            }
        ]
    },
    {
        "sessionInfo": {
            "sessionUserId": 2,
            "startTime": "1418106218946",
            "endTime": "1418106218946"
        },
        "observations": [
            {
                "obLocation": "location2",
                "obHcwType": "hcwtype2",
                "obMoment": "moment2",
                "obItem": "item2"
            }
        ]
    }
]
}

我正在接收这样的JSON:

    $json = file_get_contents('php://input');
    $arr = json_decode($json, true);

我的计数功能是

       echo count($arr['data']);

但是我得到输出1,它应该是2,因为这个数组有两个元素。我还检查了JSON编辑器,其中JSON格式是正确的。

1 个答案:

答案 0 :(得分:0)

您是否尝试过其他网址/文件?我精确地编写了你的​​代码并且它可以100%工作。

确保php://input正确无误。尝试将JSON存储在外部文件中,并尝试链接到该文件。

修改

试试这个:

$json = file_get_contents('something.json');
$arr = json_decode($json, true);
$count = 0;
for($i = 0; $i < count($arr['data']); $i++) {
    $count++;
}
echo $count;

code

result

在那里你可以看到确切的代码和输出。如您所见,正在输出相同的JSON,然后是其下的计数。

如果你仍然没有做对,那么你正在使用不同的JSON源,或者你有一些东西覆盖PHP中的变量