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

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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?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
... ...
*/

?>