zoukankan      html  css  js  c++  java
  • 统计每小时数据的处理

    有人问在数据库中得到某个小时有多少条的的统计数据,但是一天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);
    ?>

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

    结果如下:

  • 相关阅读:
    ZD ZDC数据类型 sort
    常识
    面试
    无锡
    sqlldr return code
    025:为什么需要将Logger对象声明为private static final类型的
    中级职称
    《宪法》关于全国人民代表大会的规定
    python打包成exe
    请问.AE和PR有什么区别?
  • 原文地址:https://www.cnblogs.com/lizhaoyao/p/7264365.html
Copyright © 2011-2022 走看看