执行时间超过了PHP

执行时间超过了PHP,php,Php,我有这个功能,检查开始,结束和重复日期。因此,开始日期和结束日期用作日期范围,repeatFollowup是在时间段内每月重复的日期。我无法调试代码,因为是什么导致了延迟,还是一个无限循环 感谢您的帮助。多谢各位 public function calculateDaysOfMonth($startDate、$endDate、$repeatFollowup){ $begin=new\DateTime($startDate); $end=new\DateTime($endDate); $repe

我有这个功能,检查开始,结束和重复日期。因此,开始日期和结束日期用作日期范围,repeatFollowup是在时间段内每月重复的日期。我无法调试代码,因为是什么导致了延迟,还是一个无限循环

感谢您的帮助。多谢各位

public function calculateDaysOfMonth($startDate、$endDate、$repeatFollowup){
$begin=new\DateTime($startDate);
$end=new\DateTime($endDate);
$repeatDate=new\DateTime($begin->format('Y-m').-'.date($repeatFollowup));
$days=array();
elseif($repeatFollowup==30){
$newDate=Carbon::parse('.$repeatDate->format('Y-m-d')的第一天);
//变量转储($newDate->format('Y'));die();
而($repeatDateformat('m')==2){
$days[]=$newDate->addDays(27);
$newDate->modify('下个月的第一天')
}
否则{
$days[]=$newDate->addDays(29);
$newDate->modify('下个月的第一天')
}
}
var_dump($天);die();
返回$days;
}

}
是的,您处于一个无限循环中,因为您从未添加到repeatDate,因此它将始终低于end(如果是这种情况),您应该执行以下操作:

        while($repeatDate<=$end){


            if($repeatDate->format('m')==2){
                $days[] = $newDate->addDays(27);
                $newDate->modify('first day of next month')
            }
            else{
                $days[] = $newDate->addDays(29);
                $newDate->modify('first day of next month')
            }
           $repeatDate->addDays(x);
        }
while($repeatDateformat('m')==2){
$days[]=$newDate->addDays(27);
$newDate->modify('下个月的第一天')
}
否则{
$days[]=$newDate->addDays(29);
$newDate->modify('下个月的第一天')
}
$repeatDate->addDays(x);
}

您不会在循环中的任何一点更改
$repeatDate
$end
,因此它自然不会结束。感谢您的帮助!我发现另一个问题是,它实际上并没有按照规定添加天数,而是会输出每个月的第一天