• php+mysql实现补齐24小时时间段同时赋值0的后端解决方案


    项目需求

    在php中使用mysql生成

    arr = [
            {
                "dataKey": "00",
                "totalTrans": "4",
                "totalPays": "301.70"
            },
            {
                "dataKey": "01",
                "totalTrans": "1",
                "totalPays": "39.90"
            },
            {
                "dataKey": "03",
                "totalTrans": "2",
                "totalPays": "35.80"
            }]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    json字符串。dataKey代表24小时的时间段,mysql读取到实际只有3个,如何按照格式补齐其他时间段的数。

    解决放哪

    使用PHP中的MySQL扩展和循环来生成这个JSON字符串。首先,从MySQL数据库中获取实际存在的时间段,并将它们放入一个数组中。然后,使用一个循环来遍历所有24个小时,并检查每个小时是否存在于数据数组中。如果不存在,添加一个新的对象到结果数组中,并将"totalTrans"和"totalPays"属性设置为0。最后,使用json_encode函数将结果数组转换为JSON字符串。

    以下是一个示例代码:

    
    // 连接到MySQL数据库
    $servername = "localhost";
    $username = "your_username";
    $password = "your_password";
    $dbname = "your_database";
    
    $conn = new mysqli($servername, $username, $password, $dbname);
    
    // 检查连接是否成功
    if ($conn->connect_error) {
        die("连接失败: " . $conn->connect_error);
    }
    
    // 查询实际存在的时间段
    $sql = "SELECT dataKey FROM your_table";
    $result = $conn->query($sql);
    
    // 将实际存在的时间段放入一个数组中
    $existingHours = [];
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            $existingHours[] = $row['dataKey'];
        }
    }
    
    // 创建一个包含所有24个时间段的数组
    $allHours = Array();
    for ($i = 0; $i < 24; $i++) {
        $hour = str_pad($i, 2, '0', STR_PAD_LEFT);
        $allHours[] = $hour;
    }
    
    // 创建一个新的数组,用于存放补齐后的数据
    $filledData = [];
    
    // 遍历所有的时间段
    foreach ($allHours as $hour) {
        // 如果这个时间段在实际存在的时间段中,就添加到新的数组中
        if (in_array($hour, $existingHours)) {
            $sql = "SELECT totalTrans, totalPays FROM your_table WHERE dataKey = '$hour'";
            $result = $conn->query($sql);
            if ($result->num_rows > 0) {
                $row = $result->fetch_assoc();
                $filledData[] = array(
                    "dataKey" => $hour,
                    "totalTrans" => $row['totalTrans'],
                    "totalPays" => $row['totalPays']
                );
            }
        } else {
            // 如果这个时间段在实际不存在的时间段中,就添加一个新的对象,但是totalTrans和totalPays为0
            $filledData[] = array(
                "dataKey" => $hour,
                "totalTrans" => "0",
                "totalPays" => "0.00"
            );
        }
    }
    
    // 将结果数组转换为JSON字符串
    $jsonString = json_encode($filledData);
    
    // 输出JSON字符串
    echo $jsonString;
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66

    @漏刻有时

  • 相关阅读:
    1013 Battle Over Cities
    Django Web架构:全面掌握Django模型字段(上)
    九、kotlin的泛型
    飞书事件订阅的应用
    独辟蹊径”之动态切换进程代理IP
    Python 1-03 基础语法测试
    【车载音视频电脑】嵌入式AI分析车载DVR,支持8路1080P
    jQuery 框架学习笔记(基础)
    基于下垂控制的孤岛双机并联逆变器环流抑制MATLAB仿真模型
    Py列表(list)
  • 原文地址:https://blog.csdn.net/weixin_41290949/article/details/132824405