排序具有相同日期

时间:2017-04-04 00:00:11

标签: php arrays sorting datetime

我正在使用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表单的所有部分,它可以动态创建一个新事件并返回事件的渲染输出。

1 个答案:

答案 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;