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


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

    首先获得管理员选择的日期,然后获得本月的起始时间戳和结束时间戳,在通过和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
      ... ...
    */
    
    ?>



  • 相关阅读:
    笔试题系列001
    算法系列001---dfs|多叉|解空间树理解
    leetcode--014 Gas station
    leetcode--012 single number I
    leetcode--011 copy list with random pointer
    leetcode--010 Linked List Cycle II
    leetcode--009 Linked List Cycle I
    leetcode--007 word break I
    leetcode-006 detect cycle
    alex鸡汤回信
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5244647.html
Copyright © 2020-2023  润新知