PHP计数返回的JSON长度错误

时间:2014-05-21 05:21:06

标签: php json

这是我从数据库获取的JSON响应。我想打印这些数据。目前,我的表中只有2个条目。所以JSON的长度应为2.随着数据的增加,计数必须增加。为了显示输出,我使用for循环。我使用count()来限制循环的迭代只通过JSON。

我的JSON:

{
    "log": [
        {
            "action": "qq",
            "id": "1",
            "Time": "2014-05-19T15:40:06+05:30",
            "user": {
                "firstName": "dani",
                "type": {
                    "zzs": "1",
                    "typename": "lolo",
                    "id": "1",
                    "zzt": "1",
                    "zzu": "1",
                    "zzv": "1",
                    "zzw": "1",
                    "zzx": "1"
                },
                "id": "1",
                "lastName": "fed",
                "password": "lmfao",
                "userName": "fyi"
            },
            "userIpAddress": "101.15.23.45"
        },
        {
            "action": "vv",
            "id": "2",
            "Time": "2014-05-20T10:16:33+05:30",
            "user": {
                "firstName": "dani",
                "type": {
                    "zzs": "1",
                    "typename": "lolo",
                    "id": "1",
                    "zzt": "1",
                    "zzu": "1",
                    "zzv": "1",
                    "zzw": "1",
                    "zzx": "1"
                },
                "id": "1",
                "lastName": "web",
                "password": "rolf",
                "userName": "asap"
            },
            "userIpAddress": "192.168.0.181"
        }
]
}

我的PHP

$out = json_decode($json_data, true);
$x= count($out);
echo $x;

我得到的值是1而不是2.正如你所看到的,我有一个关联数组。我试图打印这些数据。

for($i=0; $i<$x; $i++)
{
echo $out['action'];
echo $out['user'][$i]['firstName'] ;
echo $out['user']['type'][$i]['typename'] ;
}

我没有得到输出。 HELP ???

2 个答案:

答案 0 :(得分:1)

我认为它可能只是在计算“Log”......从技术上讲,响应是二维的:

data[0] = log
data[0][0] = log.firstRecord
data[0][1] = log.secondRecord

尝试迭代第二维

答案 1 :(得分:0)

您的数组中的log项内有2个元素。 试试这个:

$x= count($out['log']);

这将计算2

demo

对于你的循环,你应该尝试这样:

$out = json_decode($json_data, true);
$x= count($out['log']);
$out = $out['log'];
for($i=0; $i<$x; $i++)
{
echo $out[$i]['action'];
echo $out[$i]['user']['firstName'] ;
echo $out[$i]['user']['type']['typename'] ;
}

complete demo