php+mysql按月统计一年内注册人数

本文介绍如何使用PHP和MySQL来统计一年内每个月的注册用户数,即使某些月份没有用户注册也会显示为0。通过查询SQL语句获取数据,然后对结果进行处理,填充缺少的月份,确保前端能够顺利处理并展示完整数据。

首先业务需求是统计一年内(截止到当前时间)每个月的注册人数,而且没有人注册的月份也要显示,并显示注册人数为0

这里封装好的函数,执行原生sql语句查询,用框架也是一样的

这是查询到的结果集,可以看到注册人数为0的月份是不显示的,不符合业务需求,前端也表示无法处理


这里通过循环上面的结果集,把没有数据的月份补全


这里是最后的结果,符合需求,这样返给前端,他们就能愉快的循环了...


当然会有更好的方法,希望大家多多指教,下面附上代码

function count(){

    JXMySQL_Execute("SELECT DATE_FORMAT(FROM_UNIXTIME(reg_time),'%Y%m') AS month,COUNT(*) AS num 
						 FROM pt_user 
						 WHERE `reg_time`
						 BETWEEN UNIX_TIMESTAMP(now()) - 31556926
						 AND UNIX_TIMESTAMP(now())
						 GROUP BY month");
		$arr = JXMySQL_Result();
		$today = date('m');
		$res = [];
		foreach ($arr as $key => $val) {
		    $res[$val['month']] = $val['num'];
		}
		$ext = date('Y');
		for ($i=1; $i < 13; $i++) {
		    if($today < 10){
		        if($i < 10 && $i >$today) $key = ($ext-1).'0';
		        elseif($i >= 10) $key = $ext-1;
		        else $key = $ext.'0';
		        if(!array_key_exists($key.$i,$res)){
		            $res[$key.$i] = 0;
		        }
		    }else{
		        if($i > $today) $key = $ext-1;
		        elseif($i >= 10 && $i <= $today) $key = $ext;
		        else $key = ($ext).'0';
		        if(!array_key_exists($key.$i,$res)){
		            $res[$key.$i] = 0;
		        }
		    }

		}

}
























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值