php 时间轴,数据统计(最近7天的数据)
每天的数据都有插入到stat表,但是stat表并不一定有每天数据,不全。所以在groupby 按天分组以后,需要置0,取出最近7天的数据。代码如下:
/**
*获取最近一周的数据/从昨天算起的7天
*/
function get_weeks($time = '', $format='Y-m-d'){
$time = $time != '' ? $time : time();
//组合数据
$date = [];
for ($i=0; $i<7; $i++){
$date[$i] = date($format ,strtotime( '+' . $i-7 .' days', $time));
}
return $date;
}
//以下代码是有数据的天数:
$arr = array(
array(
"date"=>"2019-11-06",
"money"=> "123.00"
),
array(
"date"=>"2019-11-09",
"money"=> "123.00"
), array(
"date"=>"2019-11-10",
"money"=> "123.00"
), array(
"date"=>"2019-11-12",
"money"=> "246.00"
),
);
//循环赋值,置0
$a = get_weeks();
foreach($a as $key=>$value){
$z[$key]['date'] = $value;
$z[$key]['money'] = 0;
foreach($arr as $k=>$v){
if($v['date']==$value){
$z[$key]['money'] = $v['money'];
}
}
}
//打印出执行结果即可
var_dump($z);
//以下是获取两个时间间隔里所有的天数
/**
*两个时间间隔里所有的天数
*/
function printDates($start,$end){
$dt_start = strtotime($start);
$dt_end = strtotime($end);
while ($dt_start<=$dt_end){
$arr[] = date('Y-m-d',$dt_start);
$dt_start = strtotime('+1 day',$dt_start);
}
return $arr;
}