我正在使用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;
}
这是ajax表单的所有部分,它可以动态创建一个新事件并返回事件的渲染输出。
答案 0 :(得分:0)
我修改了getDate()格式以包含时间,似乎已经完成了这个技巧。
return (strtotime($a->getDate()->format('Y-m-d H:i:s')) < strtotime($b->getDate()->format('Y-m-d H:i:s'))) ? -1 : 1;