2 回答
TA贡献1818条经验 获得超8个赞
您应该更改查询数据库的方式。您应该使用准备好的语句,而不是在查询中注入字符串。这使您容易受到 sql 注入的影响。
回到问题:
对于发现的每个月,您需要创建一个数组,其中包含一个系列数组。检查月份数组是否存在,如果它不创建它并创建系列数组。然后创建一个包含系列数据的数组,并将其中的系列数据推送到该月的系列数组中。
查看代码要容易得多。我也添加了评论。
$result = mysqli_query($db, $query)or die(mysqli_error());
$response = array();
$posts = array();
while($row=$result->fetch_assoc())
{
$month=$row['name'];
if(!isset($posts[$month])){// Check to see if the month array exists
//if it doesn't create it
$posts[$month] = array();
//create the series array so data can be pushed to it
$posts[$month]["series"] = array();
}
//check to see if it is null and if it is make it 0
if(is_null($row['value'])){
$row['value'] =0;
}
//put the series data in the correct format with correct names
$series_array = array(
"name" => $row['facility'],
"value" => $row['value']
);
//push the series data into the months series array
array_push($posts[$month]["series"],$series_array);
}
// put months and series together
$new_posts=array();
foreach($posts as $month_name => $data){
array_push($new_posts, array("name"=> $month_name, "series"=> $data['series'] ));
}
$posts = $new_posts;
$response['data'] = array($posts);
header('Content-Type: application/json');
echo json_encode($response, JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT);
TA贡献1827条经验 获得超9个赞
这是您需要的代码
$result = mysqli_query($db, $query)or die(mysqli_error($db));
$response = array();
$posts = array();
while($row=$result->fetch_assoc()){
$month = $row['name'];
$value = $row['value'];
if(empty($value)){
$value = 0;
}
$series = array(
"name" => $row['facility'],
"value" => $value
);
$found_key = array_search($month, array_column($posts, 'name'));// check if month value exist in name key
if(!$found_key){//if not found
$found_key = sizeof($posts);// get the size of array which will be 1 more then last index of array
}
$posts[$found_key]['name'] = $month;// this add name of month
if(!isset($posts[$found_key]['series'])){ // check if series is set
$posts[$found_key]['series'] = array();// or set it
}
$posts[$found_key]['series'][] = $series; //assign the series array
}
$response['data'] = $posts;
header('Content-Type: application/json');
echo json_encode($response, JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT);
- 2 回答
- 0 关注
- 142 浏览
添加回答
举报