本次是以数据接口实现。接口数据如json数据$html
目标:将一个小时中的数据合为一条
1.数据库
<?php
namespace Home\Controller;
use Home\Controller\CommonController;
class KeyController extends CommonController
{
public $model_name = "Key";
public $model_user = "apiuser";
/*
* 执行实时数据
*/
public function index(){
//测试数据
$html = '[{ "ID":0,"inputdate":"2017-9-8 0:00:00","setid":"SL001","key":"风速","value":"0.8m/s"},{ "ID":0,"inputdate":"2017-9-8 0:00:00","setid":"SL001","key":"风向","value":"93"},{ "ID":0,"inputdate":"2017-9-8 0:00:00","setid":"SL001","key":"气压","value":"821.2hpa"},{ "ID":0,"inputdate":"2017-9-8 0:00:00","setid":"SL001","key":"湿度","value":"89%"},{ "ID":0,"inputdate":"2017-9-8 0:00:00","setid":"SL001","key":"太阳辐射","value":"0w/m2"},{ "ID":0,"inputdate":"2017-9-8 0:00:00","setid":"SL001","key":"温度","value":"18.8℃"},{ "ID":0,"inputdate":"2017-9-8 0:00:00","setid":"SL001","key":"一小时降水量","value":"0mm"},{ "ID":0,"inputdate":"2017-9-8 1:00:00","setid":"SL001","key":"风速","value":"0.7m/s"},{ "ID":0,"inputdate":"2017-9-8 1:00:00","setid":"SL001","key":"风向","value":"138"},{ "ID":0,"inputdate":"2017-9-8 1:00:00","setid":"SL001","key":"气压","value":"820.8hpa"},{ "ID":0,"inputdate":"2017-9-8 1:00:00","setid":"SL001","key":"湿度","value":"92%"},{ "ID":0,"inputdate":"2017-9-8 1:00:00","setid":"SL001","key":"太阳辐射","value":"0w/m2"},{ "ID":0,"inputdate":"2017-9-8 1:00:00","setid":"SL001","key":"温度","value":"18.4℃"},{ "ID":0,"inputdate":"2017-9-8 1:00:00","setid":"SL001","key":"一小时降水量","value":"0mm"},{ "ID":0,"inputdate":"2017-9-8 2:00:00","setid":"SL001","key":"风速","value":"1.2m/s"},{ "ID":0,"inputdate":"2017-9-8 2:00:00","setid":"SL001","key":"风向","value":"116"},{ "ID":0,"inputdate":"2017-9-8 2:00:00","setid":"SL001","key":"气压","value":"820.5hpa"},{ "ID":0,"inputdate":"2017-9-8 2:00:00","setid":"SL001","key":"湿度","value":"93%"},{ "ID":0,"inputdate":"2017-9-8 2:00:00","setid":"SL001","key":"太阳辐射","value":"0w/m2"},{ "ID":0,"inputdate":"2017-9-8 2:00:00","setid":"SL001","key":"温度","value":"18.2℃"},{ "ID":0,"inputdate":"2017-9-8 2:00:00","setid":"SL001","key":"一小时降水量","value":"0mm"},{ "ID":0,"inputdate":"2017-9-8 3:00:00","setid":"SL001","key":"风速","value":"0.3m/s"},{ "ID":0,"inputdate":"2017-9-8 3:00:00","setid":"SL001","key":"风向","value":"85"},{ "ID":0,"inputdate":"2017-9-8 3:00:00","setid":"SL001","key":"气压","value":"820hpa"},{ "ID":0,"inputdate":"2017-9-8 3:00:00","setid":"SL001","key":"湿度","value":"94%"},{ "ID":0,"inputdate":"2017-9-8 3:00:00","setid":"SL001","key":"太阳辐射","value":"0w/m2"},{ "ID":0,"inputdate":"2017-9-8 3:00:00","setid":"SL001","key":"温度","value":"18.2℃"},{ "ID":0,"inputdate":"2017-9-8 3:00:00","setid":"SL001","key":"一小时降水量","value":"0mm"},{ "ID":0,"inputdate":"2017-9-8 4:00:00","setid":"SL001","key":"风速","value":"0.7m/s"},{ "ID":0,"inputdate":"2017-9-8 4:00:00","setid":"SL001","key":"风向","value":"192"},{ "ID":0,"inputdate":"2017-9-8 4:00:00","setid":"SL001","key":"气压","value":"820hpa"},{ "ID":0,"inputdate":"2017-9-8 4:00:00","setid":"SL001","key":"湿度","value":"94%"},{ "ID":0,"inputdate":"2017-9-8 4:00:00","setid":"SL001","key":"太阳辐射","value":"0w/m2"},{ "ID":0,"inputdate":"2017-9-8 4:00:00","setid":"SL001","key":"温度","value":"18.4℃"},{ "ID":0,"inputdate":"2017-9-8 4:00:00","setid":"SL001","key":"一小时降水量","value":"0mm"},{ "ID":0,"inputdate":"2017-9-8 5:00:00","setid":"SL001","key":"风速","value":"0.4m/s"},{ "ID":0,"inputdate":"2017-9-8 5:00:00","setid":"SL001","key":"风向","value":"220"},{ "ID":0,"inputdate":"2017-9-8 5:00:00","setid":"SL001","key":"气压","value":"819.9hpa"},{ "ID":0,"inputdate":"2017-9-8 5:00:00","setid":"SL001","key":"湿度","value":"97%"},{ "ID":0,"inputdate":"2017-9-8 5:00:00","setid":"SL001","key":"太阳辐射","value":"0w/m2"},{ "ID":0,"inputdate":"2017-9-8 5:00:00","setid":"SL001","key":"温度","value":"18.1℃"},{ "ID":0,"inputdate":"2017-9-8 5:00:00","setid":"SL001","key":"一小时降水量","value":"0mm"},{ "ID":0,"inputdate":"2017-9-8 6:00:00","setid":"SL001","key":"风速","value":"0.5m/s"},{ "ID":0,"inputdate":"2017-9-8 6:00:00","setid":"SL001","key":"风向","value":"172"},{ "ID":0,"inputdate":"2017-9-8 6:00:00","setid":"SL001","key":"气压","value":"820.1hpa"},{ "ID":0,"inputdate":"2017-9-8 6:00:00","setid":"SL001","key":"湿度","value":"97%"},{ "ID":0,"inputdate":"2017-9-8 6:00:00","setid":"SL001","key":"太阳辐射","value":"0w/m2"},{ "ID":0,"inputdate":"2017-9-8 6:00:00","setid":"SL001","key":"温度","value":"18.1℃"},{ "ID":0,"inputdate":"2017-9-8 6:00:00","setid":"SL001","key":"一小时降水量","value":"0mm"},{ "ID":0,"inputdate":"2017-9-8 7:00:00","setid":"SL001","key":"风速","value":"0m/s"},{ "ID":0,"inputdate":"2017-9-8 7:00:00","setid":"SL001","key":"风向","value":"226"},{ "ID":0,"inputdate":"2017-9-8 7:00:00","setid":"SL001","key":"气压","value":"820.5hpa"},{ "ID":0,"inputdate":"2017-9-8 7:00:00","setid":"SL001","key":"湿度","value":"98%"},{ "ID":0,"inputdate":"2017-9-8 7:00:00","setid":"SL001","key":"太阳辐射","value":"1w/m2"},{ "ID":0,"inputdate":"2017-9-8 7:00:00","setid":"SL001","key":"温度","value":"18.2℃"},{ "ID":0,"inputdate":"2017-9-8 7:00:00","setid":"SL001","key":"一小时降水量","value":"0mm"},{ "ID":0,"inputdate":"2017-9-8 8:00:00","setid":"SL001","key":"风速","value":"0.5m/s"},{ "ID":0,"inputdate":"2017-9-8 8:00:00","setid":"SL001","key":"风向","value":"158"},{ "ID":0,"inputdate":"2017-9-8 8:00:00","setid":"SL001","key":"气压","value":"820.8hpa"},{ "ID":0,"inputdate":"2017-9-8 8:00:00","setid":"SL001","key":"湿度","value":"98%"},{ "ID":0,"inputdate":"2017-9-8 8:00:00","setid":"SL001","key":"太阳辐射","value":"70w/m2"},{ "ID":0,"inputdate":"2017-9-8 8:00:00","setid":"SL001","key":"温度","value":"18.5℃"},{ "ID":0,"inputdate":"2017-9-8 8:00:00","setid":"SL001","key":"一小时降水量","value":"0mm"},{ "ID":0,"inputdate":"2017-9-8 8:00:00","setid":"","key":"负离子","value":"20860.00个/Cm3"},{ "ID":0,"inputdate":"2017-9-8 8:55:00","setid":"","key":"负离子","value":"20860.00个/Cm3"},{ "ID":0,"inputdate":"2017-9-8 9:00:00","setid":"SL001","key":"风速","value":"0.6m/s"},{ "ID":0,"inputdate":"2017-9-8 9:00:00","setid":"SL001","key":"风向","value":"203"},{ "ID":0,"inputdate":"2017-9-8 9:00:00","setid":"SL001","key":"气压","value":"821hpa"},{ "ID":0,"inputdate":"2017-9-8 9:00:00","setid":"SL001","key":"湿度","value":"94%"},{ "ID":0,"inputdate":"2017-9-8 9:00:00","setid":"SL001","key":"太阳辐射","value":"152w/m2"},{ "ID":0,"inputdate":"2017-9-8 9:00:00","setid":"SL001","key":"温度","value":"19.8℃"},{ "ID":0,"inputdate":"2017-9-8 9:00:00","setid":"SL001","key":"一小时降水量","value":"0mm"},{ "ID":0,"inputdate":"2017-9-8 9:50:00","setid":"","key":"负离子","value":"18790.00个/Cm3"},{ "ID":0,"inputdate":"2017-9-8 10:00:00","setid":"SL001","key":"风速","value":"1.3m/s"},{ "ID":0,"inputdate":"2017-9-8 10:00:00","setid":"SL001","key":"风向","value":"200"},{ "ID":0,"inputdate":"2017-9-8 10:00:00","setid":"SL001","key":"气压","value":"821.5hpa"},{ "ID":0,"inputdate":"2017-9-8 10:00:00","setid":"SL001","key":"湿度","value":"88%"},{ "ID":0,"inputdate":"2017-9-8 10:00:00","setid":"SL001","key":"太阳辐射","value":"366w/m2"},{ "ID":0,"inputdate":"2017-9-8 10:00:00","setid":"SL001","key":"温度","value":"20.4℃"},{ "ID":0,"inputdate":"2017-9-8 10:00:00","setid":"SL001","key":"一小时降水量","value":"0mm"},{ "ID":0,"inputdate":"2017-9-8 10:45:00","setid":"","key":"负离子","value":"25970.00个/Cm3"},{ "ID":0,"inputdate":"2017-9-8 11:00:00","setid":"SL001","key":"风速","value":"2.1m/s"},{ "ID":0,"inputdate":"2017-9-8 11:00:00","setid":"SL001","key":"风向","value":"186"},{ "ID":0,"inputdate":"2017-9-8 11:00:00","setid":"SL001","key":"气压","value":"821.2hpa"},{ "ID":0,"inputdate":"2017-9-8 11:00:00","setid":"SL001","key":"湿度","value":"76%"},{ "ID":0,"inputdate":"2017-9-8 11:00:00","setid":"SL001","key":"太阳辐射","value":"826w/m2"},{ "ID":0,"inputdate":"2017-9-8 11:00:00","setid":"SL001","key":"温度","value":"23.5℃"},{ "ID":0,"inputdate":"2017-9-8 11:00:00","setid":"SL001","key":"一小时降水量","value":"0mm"},{ "ID":0,"inputdate":"2017-9-8 11:40:00","setid":"","key":"负离子","value":"3210.00个/Cm3"},{ "ID":0,"inputdate":"2017-9-8 12:00:00","setid":"SL001","key":"风速","value":"2.6m/s"},{ "ID":0,"inputdate":"2017-9-8 12:00:00","setid":"SL001","key":"风向","value":"214"},{ "ID":0,"inputdate":"2017-9-8 12:00:00","setid":"SL001","key":"气压","value":"820.5hpa"},{ "ID":0,"inputdate":"2017-9-8 12:00:00","setid":"SL001","key":"湿度","value":"66%"},{ "ID":0,"inputdate":"2017-9-8 12:00:00","setid":"SL001","key":"太阳辐射","value":"873w/m2"},{ "ID":0,"inputdate":"2017-9-8 12:00:00","setid":"SL001","key":"温度","value":"24℃"},{ "ID":0,"inputdate":"2017-9-8 12:00:00","setid":"SL001","key":"一小时降水量","value":"0mm"},{ "ID":0,"inputdate":"2017-9-8 12:35:00","setid":"","key":"负离子","value":"1290.00个/Cm3"},{ "ID":0,"inputdate":"2017-9-8 13:00:00","setid":"SL001","key":"风速","value":"1.3m/s"},{ "ID":0,"inputdate":"2017-9-8 13:00:00","setid":"SL001","key":"风向","value":"209"},{ "ID":0,"inputdate":"2017-9-8 13:00:00","setid":"SL001","key":"气压","value":"819.8hpa"},{ "ID":0,"inputdate":"2017-9-8 13:00:00","setid":"SL001","key":"湿度","value":"68%"},{ "ID":0,"inputdate":"2017-9-8 13:00:00","setid":"SL001","key":"太阳辐射","value":"652w/m2"},{ "ID":0,"inputdate":"2017-9-8 13:00:00","setid":"SL001","key":"温度","value":"24.4℃"},{ "ID":0,"inputdate":"2017-9-8 13:00:00","setid":"SL001","key":"一小时降水量","value":"0mm"},{ "ID":0,"inputdate":"2017-9-8 13:30:00","setid":"","key":"负离子","value":"1360.00个/Cm3"}]';
$map = json_decode($html,true);
/*-----------隐藏该部分为加载当天的所有数据放到一个数组中-----*/
/*--$ismo--为24小时,格式中从0到23为一天*/
// $ismo = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23];
// for($i=0;$i<count($ismo);$i++){
// if($ismo[$i] == 0){
// array_push($info,$this->isdateOne($map,"0"));
// }
// if($ismo[$i] == 1){
// array_push($info,$this->isdateOne($map,"1"));
// }
// if($ismo[$i] == 2){
// array_push($info,$this->isdateOne($map,"2"));
// }
// if($ismo[$i] == 3){
// array_push($info,$this->isdateOne($map,"3"));
// }
// if($ismo[$i] == 4){
// array_push($info,$this->isdateOne($map,"4"));
// }
// if($ismo[$i] == 5){
// array_push($info,$this->isdateOne($map,"5"));
// }
// if($ismo[$i] == 6){
// array_push($info,$this->isdateOne($map,"6"));
// }
// if($ismo[$i] == 7){
// array_push($info,$this->isdateOne($map,"7"));
// }
// if($ismo[$i] == 8){
// array_push($info,$this->isdateOne($map,"8"));
// }
// if($ismo[$i] == 9){
// array_push($info,$this->isdateOne($map,"9"));
// }
// if($ismo[$i] == 10){
// array_push($info,$this->isdateOne($map,"10"));
// }
// if($ismo[$i] == 11){
// array_push($info,$this->isdateOne($map,"11"));
// }
// if($ismo[$i] == 12){
// array_push($info,$this->isdateOne($map,"12"));
// }
// if($ismo[$i] == 14){
// array_push($info,$this->isdateOne($map,"14"));
// }
// if($ismo[$i] == 15){
// array_push($info,$this->isdateOne($map,"15"));
// }
// if($ismo[$i] == 16){
// array_push($info,$this->isdateOne($map,"16"));
// }
// if($ismo[$i] == 17){
// array_push($info,$this->isdateOne($map,"17"));
// }
// if($ismo[$i] == 18){
// array_push($info,$this->isdateOne($map,"18"));
// }
// if($ismo[$i] == 19){
// array_push($info,$this->isdateOne($map,"19"));
// }
// if($ismo[$i] == 20){
// array_push($info,$this->isdateOne($map,"20"));
// }
// if($ismo[$i] == 21){
// array_push($info,$this->isdateOne($map,"21"));
// }
// if($ismo[$i] == 22){
// array_push($info,$this->isdateOne($map,"22"));
// }
// if($ismo[$i] == 23){
// array_push($info,$this->isdateOne($map,"23"));
// }
// }
// dump($info);
/*--只获取现在一小时中的所有数据并保存到数据库中去--*/
$date_h = date("H");//获取当前的小时---必须大写H,小写则例如---16点->4点
$date_h_one = preg_replace('/^0+/','',$date_h);//根据格式去除小于10前面的0----09->9
$data = $this->isdateOne($map,$date_h_one); //执行函数isdateOne(数组,条件为当前的小时)
if($this->isdateOne($map,$date_h_one)){
$data["inputdate"] = date("Y-m-d H");//将时间全部转为当前的年月日时:00:00-------2017-09-08 16:00:00
$where["inputdate"] = date("Y-m-d H");
$r = M($this->model_name)->where($where)->find();//查找在当前时间中是否已经存在一条记录
if($r){
//存在只需要修改
$model_nam = M($this->model_name)->save($data);//添加数据到数据库
if($model_nam){
echo json_encode(array("msg"=>"修改成功"));
}else{
echo json_encode(array("msg"=>"数据没有调整"));
}
}else{
$model_nam = M($this->model_name)->add($data);//添加数据到数据库
if($model_nam){
echo json_encode(array("msg"=>"添加成功"));
}else{
echo json_encode(array("msg"=>"添加失败"));
}
}
}else{
}
}
//是否为一个小时
public function isdateOne($arr,$h){
$info = array();//定义输出的新数组
for($i=0;$i<count($arr);$i++){
// dump(date("H",strtotime($arr[$i]["inputdate"]))."---".$h);
//获取到该数组中字段inputdate时间的小时与当前时间是否相等
if(date("H",strtotime($arr[$i]["inputdate"])) == $h) {
//该条信息中字段key内容包含则将它对应的value赋给新的$info
if (strstr($arr[$i]["key"] , '太阳辐射')) {
$info["radiation"] = $arr[$i]["value"];
}
if (strstr($arr[$i]["key"] , '温度')) {
$info["temperature"] = $arr[$i]["value"];
}
if (strstr($arr[$i]["key"] , '降水量')) {
$info["precipitation"] = $arr[$i]["value"];
}
if (strstr($arr[$i]["key"] , '风速')) {
$info["windspeed"] = $arr[$i]["value"];
}
if (strstr($arr[$i]["key"] , '风向')) {
$info["winddirection"] = $arr[$i]["value"];
}
if (strstr($arr[$i]["key"] , '湿度')) {
$info["humidity"] = $arr[$i]["value"];
}
if (strstr($arr[$i]["key"] , '气压')) {
$info["pressure"] = $arr[$i]["value"];
}
if (strstr($arr[$i]["key"] ,'负离子')) {
$info["anion"] = $arr[$i]["value"];
}
//时间
$info["inputdate"] = $arr[$i]["inputdate"];
}
}
//输出数组
return $info;
}
}