位置:首页 > 网络编程 > php&cms
点击展开栏目简介
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);

上篇:php/oracle:php+oracle事务处理

发表评论 ​共有​条评论
  • 匿名发表