首先,这里是我使用
的代码$json = file_get_contents('./releases.json');
$data = json_decode($json, TRUE);
$region = isset($_GET['region']) ? $_GET['region'] : null;
# if region is not null: ?region=8
if ($region) {
$region_filter = function($v) use ($region) {
// 8 == Worldwide
if ($v['region'] == $region || $v['region'] == 8) {
return true;
} else {
return false;
}
};
$data = array_filter($data['data'], $region_filter);
}
header('Content-Type: application/json');
echo json_encode(array('data' => $data));
正如您所看到的,我使用数组('数据' => $ data)将我的JSON对象($ data)存储在名为' data'的数组中,但所有这一切都是创建一个父对象数据,其中所有其他对象不是数组,我该如何解决这个问题呢?非常感谢你!
releases.json示例:
{
"last_update_on": "2017-12-30",
"data": [{..}, {..}]
}
答案 0 :(得分:0)
如果未设置$_GET['region']
,则会跳过if
块中的代码,因此其中仍然包含$data['data']
,然后您使用array('data'=>$data)
添加另一个级别。
但如果设置了$_GET['region']
,则if
块中的代码将删除它'data'
的顶级$data = array_filter($data['data'], $region_filter);
。
换句话说,$data
在结构上有所不同,具体取决于是否执行了if
块代码。试试这个
$json = file_get_contents('./releases.json');
$data = json_decode($json, TRUE);
$data = $data['data'];
$region = isset($_GET['region']) ? $_GET['region'] : null;
# if region is not null: ?region=8
if ($region) {
$region_filter = function($v) use ($region) {
// 8 == Worldwide
if ($v['region'] == $region || $v['region'] == 8) {
return true;
} else {
return false;
}
};
$data = array_filter($data, $region_filter);
}
header('Content-Type: application/json');
echo json_encode(array('data' => $data));