PHP计算时间,统计图表
来源:互联网 发布:彩票双色球大赢家软件 编辑:程序博客网 时间:2024/06/07 01:21
前言
因为公司有多个APP,需求计算出每个APP的安装量,在图表中显示出来
首先查出数据,这里借用下ThinkPHP5.0的语法
$data = db("table") -> select();$start = current($data)["add_time"];//需要查询的开始时间$end = end($data)["add_time"];//需要查询的结束时间$difference = ($start-$end)/86400;//计算天数//如果是0天或者不是整数,为浮点数就加一if($difference == 0 || !is_int($difference)){ $difference = $difference+1;}//注意你的时间如果是时间戳,便转为Y-m-d的格式,这里区分年,月,日函数 $androidNum = 0;//计算android下载总量 $iosNum = 0;//计算ios下载总量 foreach ($data as $key => &$value) { $value["add_time"] = date("Y-m-d", $value["add_time"]);//我这里是时间戳,转为Y-m-d格式 if($value["system"] == "android"){ $androidNum++; } if($value["system"] == "IOS"){ $iosNum++; } }$info = yearMonthDay($data,$difference);//转换函数,第一个参数为数据,第二个参数为开始时间与结束时间相差天数
下面的便是函数了
function yearMonthDay($data,$difference){ //判断数据是否正确 if(!is_array($data) || empty($difference)) { return json(["status" => "1", "msg" => "请传入正确的参数", "data" => ""]); } //设置一个空数组$info存储数据 $info = array(); //遍历$data foreach($data as $key => $value){ //判断$difference为多少天,并取出时间值 //小于十天就以天为单位(这里查询十条数据,所以就以月、日*10) if($difference<=10){ $current = $data[$key]["add_time"]; }elseif($difference>10 && $difference<=300){ $current = substr($data[$key]["add_time"],0, 7);//按月份计算,截取2015-10-01的前7位,也就是年月相同 }elseif($difference>300){ $current = $current = substr($data[$key]["add_time"],0, 4);//按年份计算 }else{ $current = ""; } //再次进行循环 foreach($data as $k => $v){ //取出这层循环的时间值 if($difference>10 && $difference<=300){ $next = substr($data[$k]["add_time"],0, 7); }elseif($difference>300){ $next = substr($data[$k]["add_time"],0, 4); }elseif($difference<=10){ $next = $data[$k]["add_time"]; }else{ $next = ""; } //拿出外层循环出的一条数据和内层循环的所有数据进行比较 if($current == $next){ //如果相同,就放到一个数组中去 $info[$key][] = $v; unset($data[$k]); }else{ //否则跳出循环 //因为最后一条数据,如果都不相同的话,会直接跳出循环,所以我们判断如果只有一条数据,就存下它 if(count($data) == 1){ $info[][] = $v; } break; } } } //$info是把所有数据按照年、月、日重新排序了一下,接下来我们统计下载量 //$data现在已经用不到了,所以我初始化一下他,就相当于重新定义一个数组; $data = array(); //循环新数组$info foreach($info as $key => $value){ //因为上边只是排序了数组,并没有改变数组,所以我们还要判断一下 if($difference>10 && $difference<=300){ $data[$key]["year"] = substr(current($value)["add_time"], 0, 7); }elseif($difference>300){ $data[$key]["year"] = substr(current($value)["add_time"], 0, 4); }else{ $data[$key]["year"] = current($value)["add_time"]; } //计算出每个时间段的总数量 $data[$key]["value"] = count($value); //计算android与ios每个时间段的下载数量 foreach ($value as $v){ if($v["system"] == "android"){ $android[] = $v; } if($v["system"] == "IOS"){ $IOS[] = $v; } } $data[$key]["android"] = count($android); $data[$key]["ios"] = count($IOS); } return $data;}
返回数据例子:
array (size=3)0 => array (size=4) 'year' => string '2019-10' (length=7) 'value' => int 1 'android' => int 0 'ios' => int 11 => array (size=4) 'year' => string '2018-07' (length=7) 'value' => int 1 'android' => int 0 'ios' => int 12 => array (size=4) 'year' => string '2018-06' (length=7) 'value' => int 1 'android' => int 0 'ios' => int 1
阅读全文
0 0
- PHP计算时间,统计图表
- 统计程序的计算时间。
- php 时间计算
- php的时间计算
- php计算运行时间
- PHP 日期时间计算
- php 计算运行时间
- PHP计算时间剩余时间
- Php:时间日期计算
- php时间计算
- php 计算时间
- php时间计算
- php时间计算
- PHP计算时间间隔
- PHP计算时间
- php计算时间差,时间比较,时间计算
- 统计图表
- 统计图表
- 正则表达式
- 整理:npm安装太慢,切换镜像方法
- Android中LayoutParams总结
- 浅谈Tarjan算法——(1)
- 解决mysql和可视化工具Navicat与web应用中数据库传输中文乱码问题
- PHP计算时间,统计图表
- location.href.indexOf
- Cocos 中的自动绑定规则
- jQuery笔记速览
- 消除红眼效应及matlab实现
- android本地广播的使用
- 文件下载header设置
- Cmake 自学笔记(linux)(一)
- SQL SERVER2008判断存储过程,函数存在则删除