按小时统计数据,无数据的时间点填充为0的实现方法
2013-05-07 15:59
477 查看
最近遇到一个业务逻辑:俺小时查询某段时间的订单发货量,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() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。 如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
相关文章推荐
- MySQL] 行列转换变化各种方法实现总结(行变列报表统计、列变行数据记录统计等)
- jsp从数据库获取数据填充下拉框实现二级联动菜单的方法
- [MySQL] 行列转换变化各种方法实现总结(行变列报表统计、列变行数据记录统计等
- Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
- 游戏任务成就体系的实现(三):数据统计模块(KeyUtil)的初始化和基本方法简述
- jsp从数据库获取数据填充下拉框实现二级联动菜单的方法
- laravel实现按月或天或小时统计mysql数据
- [MySQL] 行列转换变化各种方法实现总结(行变列报表统计、列变行数据记录统计等)
- Jawbone Up 数据的按小时统计及可视化(R 语言实现)
- mysql 按月分组累计统计数据,纯sql实现的一个方法
- [MySQL] 行列转换变化各种方法实现总结(行变列报表统计、列变行数据记录统计等)
- 比较两种方法实现数据统计效果
- Asp.net管理信息系统中数据统计功能的实现方法
- PHP实现数据库统计时间戳按天分组输出数据的方法
- SQL行转列 数据统计方法与实现(采购报表--四厂延迟交货)
- Bootstrap Table从服务器加载数据进行显示的实现方法
- 网站统计中的数据收集原理及实现_埋点统计
- MySql按周/月/日分组统计数据的方法
- mysql mysqldump只导出表结构或只导出数据的实现方法
- 只用css实现“每列四行,加载完一列后数据自动填充到下一列”的效果