1. 程式人生 > >統計每小時數據的處理

統計每小時數據的處理

自動 log 填充 color nbsp class image sort 自增

有人問在數據庫中得到某個小時有多少條的的統計數據,但是一天24個小時,想讓那些時間沒有數據的顯示0,該如何處理呢?

比如我們得到數組

<?php
$array1=array(
    "00"=>1,
    "01"=>2,
    "22"=>3,
    "23"=>4,
);

?>

淩晨 一點 22點 23點都有數據,可是其他時間沒有數據,該怎麽自動的填充為0呢?

方式1.循環處理

<?php
$array=array(
    "00"=>1,
    "01"=>2,
    "22"=>3,
    "23"=>4,
);

for ($i=0; $i <=23 ; $i++) { $key=strlen($i)==1?"0".$i:$i; $result[$key]=isset($array[$key])?$array[$key]:0; } var_dump($result); ?>

因為自增沒有前導零,所以要用strlen判斷一下。當然這裏面可以改進一下,比如用這種方式

<?php
$array=array(
    "00"=>1,
    "01"=>2,
    "22"=>3,
    "23"=>4,
);

for ($i=0; $i <=23 ; $i
++) { $key=sprintf(‘%02s‘, $i);; $result[$key]=isset($array[$key])?$array[$key]:0; } var_dump($result); ?>

采用sprintf彌補它。

第二種方式,直接合並數組

<?php
$array1=array(
    "00"=>1,
    "01"=>2,
    "22"=>3,
    "23"=>4,
);

$array2=array(
    "00"=>0,
    "01"=>0,
    "02"=>0,
    "03"=>0,
    "04"=>0,
    "05"=>0,
    "06"=>0,
    "07"=>0,
    "08"=>0,
    "09"=>0,
    "10"=>0,
    "11"=>0,
    "12"=>0,
    "13"=>0,
    "14"=>0,
    "15"=>0,
    "16"=>0,
    "17"=>0,
    "18"=>0,
    "19"=>0,
    "20"=>0,
    "21"=>0,
    "22"=>0,
    "23"=>0,
    "24"=>0,
);
$result=$array1+$array2; ksort($result); var_dump($result); ?>

這樣也可以得到結果 數組相加合並 然後排序即可。

結果如下:

技術分享

統計每小時數據的處理