php+msql 数据组合并保存到数据库中

本次是以数据接口实现。接口数据如json数据$html
目标:将一个小时中的数据合为一条

  1. 列表内容

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小时,格式中从023为一天*/
//        $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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_28761593

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值