如何使用JSON数据在单个PHP foreach循环中包含所有下一页数据

时间:2016-01-29 00:14:07

标签: php json

我有一个JSON文件,每页限制为50个项目,这个项目总共有818个。

我可以单独从前50个中提取数据。 我想知道是否有人知道如何拉出所有其他页面,以便他们全部在一个php请求中。

是否有人碰巧想要一个函数或if语句可以帮助解决这个问题?

具有有限量结果的json示例(将显示50):

{
    "count": 818, 
    "max_per_page": 50, 
    "current_page": 1, 
    "links": [
        {
            "href": "http://domain.com/?page=2", 
            "rel": "next"
        }, 
        {
            "href": "http://domain.com/", 
            "rel": "prev"
        }
    ], 
    "results": [
        {
            "id": "1", 
            "href": "http://domain.com/23385", 
            "product_line": "A", 
            "departures_start_date": "2015-01-01", 
            "departures_end_date": "2017-12-24"
        }, 
        {
            "id": "2", 
            "href": "http://domain.com/22760", 
            "product_line": "B", 
            "departures_start_date": "2015-01-01", 
            "departures_end_date": "2017-12-16"
        }, 
        {
            "id": "3", 
            "href": "http://domain.com/22790", 
            "product_line": "C", 
            "departures_start_date": "2015-01-01", 
            "departures_end_date": "2017-12-30"
        }, 
    ]
}

1 个答案:

答案 0 :(得分:0)

假设您使用file_get_contents检索数据,可以尝试:

$array = array();
$page = 1;
while( $data = file_get_contents( '/Your/Path/Here?page=$page++' ) )
{
    $json = json_decode( $data, True );                                   #01
    foreach( $json['results'] as $row ) $array[] = $row;
}

在循环结束时,数组将包含所有元素:

[
    [
        "id": "1", 
        "href": "http://domain.com/23385", 
        (...)
    ], 
    [
        "id": "2", 
        "href": "http://domain.com/22760", 
        (...)
    ], 
    (...) 
]

如果您更喜欢对象而不是数组,则可以省略True(#01),然后每行都可以通过$row->id而不是$row['id']来调用