【发布时间】:2013-10-25 14:28:12
【问题描述】:
我有以下 while 循环,它比较 2 个日期以查看 1 是否小于另一个,如果不是,则它将第一个日期添加一周。
它工作正常,但是如果日期之间存在较大差异(即大于 12 个月),我会收到超时错误,因为它已超过最大执行时间。
谁能帮我提高效率?
while($startDate->timestamp < $current_week->timestamp){
$data['weeks'][$w] = array(
'monday' => $startDate->startofWeek()->format('d/m/Y'),
'sunday' => $startDate->endofWeek()->format('d/m/Y')
);
$w++;
$startDate = $startDate->addDays(7); // Move it on to the following week
}
我应该补充一点,我正在使用用于 DateTime 的 Carbon API 扩展
谢谢
----编辑----
发生了一些我不明白的奇怪事情。如果我将硬编码的日期传递给 $startDate,则 2013-01-06 之后的所有内容都可以正常工作(而且速度很快),但一旦过了这个日期,它就会超时。有什么想法吗?
【问题讨论】:
-
这意味着执行脚本所用的时间比 set_time_limit 中设置的时间长(默认为 30 秒)。您可能需要再次查看您的脚本以使其更快,或者您可以将 set_time_limit 设置为更大的值。
-
@Ronald01990 是的,我知道,我只是在问,在不更改 set_time 的情况下如何使循环更高效。谢谢
-
你真的需要创建那个数组吗?
-
@Ashalynd 我使用数组为表格提供标题,用于显示给定一周的日期。
-
对不起,我删除了我的答案,因为我错了......为什么你想要一个包含两个日期之间所有星期的数组?你想用它做什么?什么是最终的 HTML?图片?