需求:需要计算这个时间数组的最大连续天数,9号到11号有连续三天,但是12号断开了,15号到18是一个连续的四天,所以计算结果应该是最大连续天数是 4 天.
/**
* 求出最大连续天数
*/
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);
}
}
使用示例:
$router->get('/', function () use ($router) {
$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',
];
dd(continue_days(array_reverse($dates)));
});
输出结果:
echo 4
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/101371.html