如何在PHP中访问多级json树以进行数据库插入

时间:2015-07-26 14:16:09

标签: php json

我正在访问返回JSON数据的API,如下所示。

{
"name": "",
"count": 4,
"frequency": "",
"version": 3,
"newdata": true,
"lastrunstatus": "success",
"thisversionstatus": "success",
"thisversionrun": "",
"results": {
    "collection": [{
        "textlink": {
            "href": "http://text1.com",
            "text": "Text 1"
        },
        "index": 1,
        "url": ""
    }, {
        "textlink": {
            "href": "http://text2.com",
            "text": "Text 2"
        },
        "index": 2,
        "url": ""
    }, {
        "textlink": {
            "href": "http://text3.com",
            "text": "Text 3"
        },
        "index": 3,
        "url": ""
    }, {
        "textlink": {
            "href": "http://text4.com",
            "text": "Text 4"
        },
        "index": 4,
        "url": ""
    }]
}}

如您所见,返回的JSON树具有多步级别。我希望能够在PHP中采用更深层次,并插入到数据库中。

目前我正在使用此代码来尝试和回显数据(一旦我能够将其插入数据库就可以了,没问题)

<?php
$request = "API.REQUEST.NET";
$response = file_get_contents($request);
$results = json_decode($response, TRUE);

foreach($results as $item) {

echo $item->results[0]->collection[0]->textlink[0]->href;
echo "<br>";
echo $item->results->collection['href'];
echo "<br>";
echo $item->results->collection['text'];

}
?>

正如您在上面所看到的,我已经尝试了几种方法来访问正在显示的更深层次的数据但无济于事。

我目前正在尝试获取非对象属性的错误&#39;。如何才能到达此阵列中的数据?

4 个答案:

答案 0 :(得分:1)

尝试:

echo $results['results']['collection'][0]['textlink']['href'];

答案 1 :(得分:0)

我建议做这样的事情(根据我的说法,从API响应中获取结果的正确方法):

<?php
$request = "API.REQUEST.NET";
$response = file_get_contents($request);

$response = json_decode($response);

foreach($response->results->collection as $item) {

echo $item->textlink->href;
echo "<br>";
echo $item->textlink->text;
echo "<br>";
echo $item->index;
echo "<br>";
echo $item->url;

}
?>

答案 2 :(得分:0)

$obj = json_decode( $json, true ); foreach ( $obj['key'] as $key => $value ) { echo $value; }

答案 3 :(得分:0)

WebMethod

你可以做这样的foreach,它只循环集合中的项目