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

  • javascript对象数据合并实现补齐24小时时间段同时赋值0的解决方案(1)
  • javascript对象数据合并实现补齐24小时时间段同时赋值0升级版解决方案(2)

项目需求

在php中使用mysql生成

arr = [
        {
            "dataKey": "00",
            "totalTrans": "4",
            "totalPays": "301.70"
        },
        {
            "dataKey": "01",
            "totalTrans": "1",
            "totalPays": "39.90"
        },
        {
            "dataKey": "03",
            "totalTrans": "2",
            "totalPays": "35.80"
        }]

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;
?>

@漏刻有时

你可能感兴趣的:(AIGC,javascript,android,adb)