• 统计每小时数据的处理


    有人问在数据库中得到某个小时有多少条的的统计数据,但是一天24个小时,想让那些时间没有数据的显示0,该如何处理呢?

    比如我们得到数组

    <?php
    $array1=array(
        "00"=>1,
        "01"=>2,
        "22"=>3,
        "23"=>4,
    );
    
    ?>

    凌晨 一点  22点 23点都有数据,可是其他时间没有数据,该怎么自动的填充为0呢?

    方式1.循环处理

    <?php
    $array=array(
        "00"=>1,
        "01"=>2,
        "22"=>3,
        "23"=>4,
    );
    
    for ($i=0; $i <=23 ; $i++)
    {
        $key=strlen($i)==1?"0".$i:$i;
        $result[$key]=isset($array[$key])?$array[$key]:0;
    }
    var_dump($result);
    ?>

    因为自增没有前导零,所以要用strlen判断一下。当然这里面可以改进一下,比如用这种方式

    <?php
    $array=array(
        "00"=>1,
        "01"=>2,
        "22"=>3,
        "23"=>4,
    );
    
    for ($i=0; $i <=23 ; $i++)
    {
        $key=sprintf('%02s', $i);;
        $result[$key]=isset($array[$key])?$array[$key]:0;
    }
    var_dump($result);
    ?>

    采用sprintf弥补它。

    第二种方式,直接合并数组

    <?php
    $array1=array(
        "00"=>1,
        "01"=>2,
        "22"=>3,
        "23"=>4,
    );
    
    $array2=array(
        "00"=>0,
        "01"=>0,
        "02"=>0,
        "03"=>0,
        "04"=>0,
        "05"=>0,
        "06"=>0,
        "07"=>0,
        "08"=>0,
        "09"=>0,
        "10"=>0,
        "11"=>0,
        "12"=>0,
        "13"=>0,
        "14"=>0,
        "15"=>0,
        "16"=>0,
        "17"=>0,
        "18"=>0,
        "19"=>0,
        "20"=>0,
        "21"=>0,
        "22"=>0,
        "23"=>0,
        "24"=>0,
    );
    $result=$array1+$array2;
    ksort($result);
    var_dump($result);
    ?>

    这样也可以得到结果 数组相加合并 然后排序即可。

    结果如下:

  • 相关阅读:
    NetBeans + Struts + Hibernate 入门教程
    The Perils of JavaSchools
    Java 2 EE 开发初体验
    五周年记
    MySQL Workbench 介绍
    JAVA语言学校的危险性
    娱乐无处不在 Sun工程师惊天发现:大吼可致硬盘潜伏期激增
    争什么?
    spring cloud使用zuul实现反向代理和负载均衡
    spring cloud 网管篇zuul
  • 原文地址:https://www.cnblogs.com/lizhaoyao/p/7264365.html
Copyright © 2020-2023  润新知