我有一个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"
},
]
}
答案 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']
来调用