按小时统计数据,无数据的时间点填充为0的实现方法
来源:互联网 发布:收据打印软件 注册码 编辑:程序博客网 时间:2024/04/30 01:59
最近遇到一个业务逻辑:俺小时查询某段时间的订单发货量,DB里边是按照小时来存的数据,如:
从数据库里查出来以后,并将数据处理成此种格式:
Array( [XX1配送中心] => Array ( [2013-04-01 11:00:00] => 2 [2013-04-01 12:00:00] => 710 [2013-04-01 13:00:00] => 35 [2013-04-01 14:00:00] => 501 [2013-04-01 15:00:00] => 851 [2013-04-01 16:00:00] => 678 [2013-04-01 17:00:00] => 693 [2013-04-01 18:00:00] => 929 [2013-04-01 19:00:00] => 31 ) [XX2配送中心] => Array ( [2013-04-01 11:00:00] => 890 [2013-04-01 12:00:00] => 1002 [2013-04-01 13:00:00] => 46 [2013-04-01 14:00:00] => 1 [2013-04-01 15:00:00] => 382 [2013-04-01 16:00:00] => 154 [2013-04-01 17:00:00] => 314 [2013-04-01 18:00:00] => 255 [2013-04-01 19:00:00] => 1 ) [XX3配送中心] => Array ( [2013-04-01 13:00:00] => 726 [2013-04-01 14:00:00] => 737 [2013-04-01 15:00:00] => 686 [2013-04-01 16:00:00] => 660 [2013-04-01 17:00:00] => 604 [2013-04-01 18:00:00] => 103 [2013-04-01 19:00:00] => 13 ) [XX4配送中心] => Array ( [2013-04-01 14:00:00] => 74 [2013-04-01 15:00:00] => 289 [2013-04-01 16:00:00] => 242 [2013-04-01 17:00:00] => 211 [2013-04-01 18:00:00] => 228 [2013-04-01 19:00:00] => 99 ))查询出来的数据要求按照图表显示,但是每个时间点都要显示,数据库里边没有的时间要填充为0。
最后听广哥建议,用下面的方法实现。
-----------------------------------------------------------------------------------------------------------------
$startTime=date('Y-m-d H:00:00', strtotime($stime)); $arr=array();//先创建所有时间点值都为0的一个数组 $temp=0; for($i=$startTime; strtotime($i)<strtotime($etime);$i=date("Y-m-d H:i:s", strtotime("$i +1 hours"))){ $arr[$i]=0; $temp++; } foreach ($data as $key=>$value) {//用array_merge()合并数组 $arr_temp=array_merge($arr,$value); $data[$key]=$arr_temp; }
此处附array_merge()的方法说明:array array_merge ( array array1 [, array array2 [, array ...]] )array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。 如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
- 按小时统计数据,无数据的时间点填充为0的实现方法
- 按月查询统计数据,没有数据的默认为0
- 从当天0点到现在的时间轴集合(小时为单位)
- 使用SQL返回按小时排序的统计数据
- sql server按不同的时间统计数据
- 某一天,24小时统计数据的整理。
- Phoenix Framework中为Tree对象填充数据的方法
- 按小时统计数据
- python 格式化时间点转化为时间戳的方法
- PL/SQL 按小时间隔生成一年的时间数据
- MySQL实现统计数据并插入数据的存储过程
- oracle 求两个时间点直接的分钟、小时数
- 在某一个时间点上添加两小时的写法
- Excel中使用填充命令填充数据的方法
- UITableView 查询结果为空,显示无数据的方法
- 编写一个子程序统计数据段中定义的前8行数据中每行字节数据为0的个数。
- SQL语句实现:输入开始和结束时间,得到1小时间隔的平均数据。
- Sqlite实现默认时间为当前时间列的方法
- 今天下午调试了一下IE6.0的bug
- Android布局相关
- QT 多线程程序设计
- Expecting "jsp:param" standard action with "name" and "value" attributes
- 同步——读写锁
- 按小时统计数据,无数据的时间点填充为0的实现方法
- HDU 3572——Task Schedule
- 【7gyy】如何修改Win7资源管理器默认路径
- PHP session 跨子域问题总结
- spring mvc 框架搭建及详解
- action中获取request
- 组合模式
- js学习篇
- C++线程池的代码,非常实用