从JSON文件中读取多级数组的部分内容

时间:2016-01-22 11:35:16

标签: php arrays json

好的,我希望这与其他问题不一样,我已经寻找类似的但却找不到答案......所以这里有。 我得到一个JSON文件,需要将内容读入数据库。没有汗水。 但是我遇到了读取最低级别的问题,因为可能存在重复的数组。 我将所有数据都归结为“comp”。

示例JSON文件:

{
"code"   : 0,
"format" : 2,
"s_data" :
{
    "name" : "Lance",
    "club" : "Southern"
},
"d_data" :
{
    "errorcode" : 3,
    "errormsg" : ""
},
"timing" :
{
    "elapsed_time" : "08:29",
    "elapsed_time_secs" : 509,
    "comp" :
    [
        {
            "no" :
            [
            {
                    "sno"    : 0,
                    "xpos"   : 230.9,
                    "ypos"   : 97.2
                },
                {
                    "sno"    : 1,
                    "xpos"   : 132.4,
                    "ypos"   : 258.3
                },
                {
                    "sno"    : 2,
                    "xpos"   : 135.5,
                    "ypos"   : 176.7
                },  
            ]
        },
        {
            "no" :
            [
            {
                    "sno"    : 0,
                    "xpos"   : 250.9,
                    "ypos"   : 92.2
                },
                {
                    "sno"    : 1,
                    "xpos"   : 182.4,
                    "ypos"   : 158.3
                },
                {
                    "sno"    : 2,
                    "xpos"   : 145.5,
                    "ypos"   : 192.7
                }
            ]
        }
    ]
}
}

所以我现在想要阅读“不”数据,但只是第一个“不”的例子......那就是:sno,xpos,ypos foreach“sno”条目..

我在想:

$mydata = json_decode(sample.json, true);
foreach($mydata->comp[0]->no as $values)
{
  echo $values->sno . "\n";
}

我一无所获。 任何形式的帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

如果在关联数组中对其进行解码,则必须使用它,请尝试以下代码:

foreach($mydata['timing']['comp'][0]['no'] as $values)
{
                echo $values['sno'] . "\n";
}

所有对$mydata的访问都使用数组样式表示法。

您还必须考虑发布的那个不是有效的JSON字符串。

编辑20160122: JSON字符串现在有效。