按小時統計資料,無資料的時間點填充為0的實現方法

2021-06-14 04:15:30 字數 2007 閱讀 5805

最近遇到乙個業務邏輯:俺小時查詢某段時間的訂單發貨量,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)$value)

此處附array_merge()的方法說明:

array array_merge ( array array1 [, array array2 [, array ...]] )

array_merge() 將乙個或多個陣列的單元合併起來,乙個陣列中的值附加在前乙個陣列的後面。返回作為結果的陣列。

如果輸入的陣列中有相同的字串鍵名,則該鍵名後面的值將覆蓋前乙個值。然而,如果陣列包含數字鍵名,後面的值將不會覆蓋原來的值,而是附加到後面。

如果只給了乙個陣列並且該陣列是數字索引的,則鍵名會以連續方式重新索引。

按周,按月,按日,按小時分組統計資料

url 遇到了,總結,僅僅是個搬運工!來自陶偉基wiki select date format create time,y u weeks,count caseid count from tc case group by weeks select date format create time,y ...

按周,按月,按日,按小時分組統計資料

url 遇到了,總結,僅僅是個搬運工!來自陶偉基wiki select date format create time,y u weeks,count caseid count from tc case group by weeks select date format create time,y ...

mysql按周統計資料

主要就是使用date format這個方法 select date format createtime,y u weeks,count count from user group by weeks order by weeks desc u 周 00 53 星期日是一周的第一天 u 周 00 53 ...