Нужна помощь в сортировке нескольких массивов - PullRequest
0 голосов
/ 31 января 2011

Я вижу много примеров здесь, но это не работает для меня.

У меня есть список отсортированных событий, извлеченных из моей БД:

16.08.2010 12:00:00 - 21.08.2010 20:00:00
16.08.2010 20:00:00 - 21.08.2010 23:00:00
18.08.2010 17:00:00 - 18.08.2010 19:00:00

Как видите, первое событие с 16.08 по 21.08.
Мне нужно «порезать это», чтобы я получил одну запись на каждый день.

Это моя функция:

  function fullList( $data ) {
    $ev = $data['events']; 
    $events = array();

    // Loop through each event. If event spans over several days, add each day in to new event list  
    foreach($ev as $e) :
      $endDate = strtotime(date('Y-m-d 23:59:59', strtotime($e->endTime)));
      $current = strtotime($e->startTime);

      // Copy event so data is not overwritten
      $newEv = $e;

      while ($current <= $endDate) {

          //Set start date of event to new date
          $newEv->startTime = date('d.m.Y H:i:s', $current);

          // Add events to new event list
          array_push($events,$newEv);

          //Go to next date
          $current = strtotime('+1 day', $current);
      }      
    endforeach;
    // Need to sort $events here
  }

Теперь $events содержит все события, но не отсортировано по дате. Я пробовал uasort , но я не могу использовать uasort($array, 'cmp');.

Как мне отсортировать этот массив по дате?

Ответы [ 2 ]

2 голосов
/ 31 января 2011

Как упоминал Назарий, вам лучше предварительно отсортировать события в источнике (при условии, что они происходят из БД).

Если вам нужно отсортировать массив в коде, вы сможете использовать usort. Я предполагаю, что вы хотите отсортировать по startTime

usort($events, function($a, $b) {
    return strtotime($a->startTime) - strtotime($b->startTime);
});
2 голосов
/ 31 января 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...