php技术和开源cms使用
php:计算连续天数(连续签到/连续登陆等)
首先将数据库里的数据读取成一个日期列表的一维数组;
$dates = [ '2018-10-09','2018-10-10','2018-10-11','2018-10-13', '2018-10-15','2018-10-16', '2018-10-17','2018-10-18'];
这是一个按日期正序排列的数组,计算函数是按照倒序计算的,所以反转数组顺序
$dates=array_reverse($dates);计算方法:
//求出最大连续天数 if (!function_exists("continue_days")){ function continue_days($time_array=null){ $list_length = count($time_array); $continue_days = 1; $continue_days_array = []; for($i = 0;$i < $list_length;$i++){ $today = strtotime($time_array[$i]); if($i == $list_length -1){ $continue_days_array[] = $continue_days; }else{ $yesterday = strtotime($time_array[$i + 1]); $one_day = 24 * 3600; if($today - $yesterday == $one_day){ $continue_days += 1; }else{ $continue_days_array[] = $continue_days; $continue_days = 1; } } } if (count($continue_days_array) > 0){ $max_days = max($continue_days_array); }else{ $max_days = 0; } return $max_days; // var_dump($continue_days_array); } }调用:
$days=continue_days(array_reverse($dates));
var_dump($days);