## 按月統計時補全月份并返回格式化數據結構
```
/**
* 按月統計時補全月份并返回格式化數據結構
* @param $start_time 統計范圍(開始時間、時間戳)
* @param $end_time 統計范圍(結束時間、時間戳)
* @param $arr 待補充數組(數組中必須含有created_at字段),二維數組可以為空
* @return array
*/
function pad_month($start_time,$end_time,$arr){
$start_year = date('Y',$start_time); //2018
$start_month = intval(date('m',$start_time)); //6
$end_year = date('Y',$end_time); //2019
$end_month = intval(date('m',$end_time));//6
$new = [];//用來存放格式化后的新數組
if(!empty($arr)){
foreach ($arr as $v){
$year = date('Y',$v['created_at']);
$month = date('m',$v['created_at']);
$new[$year.$month]['month'] = date('Y-m',$v['created_at']);
$new[$year.$month]['num'] = isset($new[$year.$month]['num']) ? $new[$year.$month]['num']+$v['num'] : 0;
}
}
//判斷開始時間和結束時間是否是同一年
if($start_year == $end_year){
for ($i=$start_month;$i<=$end_month;$i++){
$month = str_pad($i,2,0,STR_PAD_LEFT);
if(!array_key_exists($start_year.$month,$new)){
$new[$start_year.$month] = ['month'=>$start_year.'-'.$month,'num'=>0];
}
}
}else{
$diff = $end_year - $start_year + 1;//相差的年數
for ($y=1;$y<=$diff;$y++){
for($i=$start_month;$i<=12;$i++){
$month = str_pad($i,2,0,STR_PAD_LEFT);
if(!array_key_exists($start_year.$month,$new)){
$new[$start_year.$month] = ['month'=>$start_year.'-'.$month,'num'=>0];
}
//如果與結束時間年月相等則結束循環
if($start_year.$i == $end_year.$end_month){
break;
}
}
$start_year++;//年數增加一
$start_month = 1;//重置月份
}
}
ksort($new);
return array_values($new);
}
```