如果这有点简单,我道歉,但我一直在谷歌和googleing,似乎无法找到我正在寻找的东西。
我有一个日历脚本,允许用户上传持续一天以上的事件。它将事件存储在mysql数据库表中,该表将日期和日期存储在不同的列中。
当我尝试从表中提取日期并将日期存储为数组时,包括来自/到日期之间的日期,以便它们可以在日历中突出显示,脚本超时告诉我它已用完了从/到日期之间的日期行的内存。当然这不可能是正确的,因为桌子只举行我的测试活动,它只持续一周。
可能有一种更简单的方法可以一起完成这一切,如果我的脚本存在其他问题,我也不会感到惊讶,所以任何和所有输入都非常受欢迎。谢谢!
这是snipet:
$FromDate=date("Y-m-d", strtotime($Calendar['FromDate']));
$ToDate=date("Y-m-d", strtotime($Calendar['ToDate']));
while($FromDate < $ToDate){
// below is the line it times out on.
$StartDate=date("Y-m-d", strtotime("+1 day", strtotime($FromDate)));
$EventDays[]=date("d", strtotime($StartDate));
}
答案 0 :(得分:1)
它看起来像一个简单的无限循环,因为你永远不会改变$FromDate
或$ToDate
所以while(...)
永远不会停止而你的内存耗尽,因为你总是一次又一次地存储相同的日期
我认为您要将$StartDate
重命名为$FromDate
以获取您所谴责的行为。
答案 1 :(得分:1)
如果您使用的是PHP 5.3,那么这是一个使用DatePeriod的绝佳机会。
<?php
$start = new DateTime('2011-01-01');
$interval = new DateInterval('P1D');
$end = new DateTime('2011-01-28');
// Modify end by one day, so the end date is included.
$period = new DatePeriod($start, $interval, $end->modify('+1 day'));
$eventdays = array();
foreach($period as $date) {
$eventdays[] = $date->format('d');
}
var_dump($eventdays);
答案 2 :(得分:0)
你为什么不......
SELECT * FROM events WHERE datum BETWEEN '2011-4-6' AND '2011-4-12';
用SQL然后用PHP做其他事情?