我有一个显示活动的网站;每个事件可以有x个日期(没有限制)。 我需要在主页面上显示最接近今天日期的事件。
这应该是一个明智的选择,但由于某些原因它不起作用。任何帮助将不胜感激。
所以这是我选择主要事件的功能。事件先前已从数据库中提取,链接日期存储在关键字“日期”下。它们通过参数“$ events”传递给函数。 每个日期都是(int)unix日期。
function getMainEvent(&$events){
$today = time();
$currentEvent = end($events); //selecting the last entered event (most likely to be the main event)
$currentEventLast = max($currentEvent['dates']); //selecting the highest date linked to that event
foreach($events as $k=>&$event){ //looping through events
$date = min($event['dates']); //selecting the lowest date for the current event
if($date>$today && $date<$currentEventLast){
//if $date is higher than today (so it's not in the past), but lower than main event's date...
$currentEvent = &$event; //make that event the main event
$currentEventLast = max($currentEvent['dates']); //select the latest date of that event
}
}
return $currentEvent;
}
答案 0 :(得分:0)
此算法似乎存在许多问题。
$currentEventLast
设置为“最后输入事件”的最高日期。如果“最后输入的事件”仅包含过去的日期会怎样?$date
设置为当前事件的最低日期。如果该日期是过去会发生什么?if
条件为真,则将$currentEventLast
设置为当前事件的最新日期。但是,您不应该将其设置为您在if
条件下考虑的日期吗?$time
包含时间戳。如果是午夜过了一秒钟,那么今天发生的事件将由您的职能“过去”判断。