• 实现统计某个月内每天新增用户数的方法


    现在有一个需求:管理员选择某一个月份,然后显示这个月每天的新增用户数。

    首先获得管理员选择的日期,然后获得本月的起始时间戳和结束时间戳,在通过和member表中的addtime字段进行比较,从而获得当月新增的用户列表,这个是不难实现的。

    那么要怎么获得每日的新增用户数量呢?如果要用select count(1) 这样的语句配合addtime>=begin_time+86400 and addtime<=begintime+172800这样的条件来查询就太恐怖了,先不说操作复杂,而且执行一次操作就要查询30或31次,这样肯定不行。

    可以换一个思路,既然我们已经能够获得当月新增的用户列表members,那么每个用户的addtime我们也可以知道了,此时可以对整个members列表进行遍历,把日期作为键名,用户数作为键值创建一个新数组,如果某条记录的addtime已经在数组中存在的话就加1,不存在的话就以这个addtime创建一个新元素。

    <?php
    $arr_mem = array();
    foreach ($members as $k => $v) {
        $datetime = substr($v['addtime'],0,10);//得到年月日
        //得到每日新增用户数
        if(array_key_exists($datetime,$arr_mem)){
            $arr_mem[$datetime] +=1;
        }else{
            $arr_mem[$datetime] =1;
        }
    }
    var_dump($arr_mem);die;
    /*
    array (size=31)
      '2013-12-01' => int 64
      '2013-12-02' => int 191
      '2013-12-03' => int 200
      '2013-12-04' => int 217
      '2013-12-05' => int 217
      '2013-12-06' => int 228
      '2013-12-07' => int 148
      '2013-12-08' => int 91
      ... ...
    */
    
    ?>



  • 相关阅读:
    2020软件工程作业05
    一、uart&tty驱动
    柔性数组使用备忘
    指针和数组备忘
    计算信息帧的校验和(备忘)
    Linux系统vim几个常见配置
    C语言实现过滤ASCII在0~127范围内的字符,并去除重复的字符
    extern "C"的用法
    strtol详解
    将一个十进制整数转换为二进制并输出
  • 原文地址:https://www.cnblogs.com/moqiang02/p/4061170.html
Copyright © 2020-2023  润新知