1
我正在使用usort函數按日期屬性對對象數組進行排序。這些對象是事件,數組可以存儲大量同一天發生的事件。我通過查看數組的大小爲每個新事件的日期附加一個增量秒,以便每個新事件都是唯一的,並且應該是最後一個。但是排序不是這樣的。對具有相同日期的對象排序
public function addEvent($event)
{
//modify event by adding a second based on the size of events array
$event->getDate()->modify("+" . sizeof($this->getEvents()) . " second");
//add new event to events array
$this->events[] = $event;
//begin sort
$events = $this->getEvents();
usort($events, array($this, 'date_compare'));
//store new sorted events array
$this->setEvents($events);
}
function date_compare($a, $b)
{
return (strtotime($a->getDate()->format('Y-m-d')) < strtotime($b->getDate()->format('Y-m-d')))? -1 : 1;
}
這是創建在運行一個新的事件,並返回事件的渲染輸出阿賈克斯形式的一部分。
你的陣列在哪裏? –
你的'date_compare'函數試圖比較沒有秒的日期。曾聽說[DateTime :: diff](http://php.net/manual/en/datetime.diff.php)? – PHPglue
事件數組存儲在存儲在會話中的另一個父對象屬性中。例如,會議室對象具有事件/會議列表。 – raupie