Я вижу здесь много примеров, но это не работает для меня.Нужна помощь в сортировке нескольких массивов
У меня есть список отсортированных событий, извлекаемых из моей БД:
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');
.
Как я могу сортировать этот массив по дате?
Было бы более эффективно это делать с помощью параметра MySQL ORDER BY. – Nazariy
Почему вы не можете использовать uasort (или usort, что было бы более подходящим)? – Phil
FYI, вы не копируете '$ e', назначая его' $ newEnv', вы просто создаете другую ссылку. Чтобы скопировать объект, используйте [клон] (http://php.net/manual/en/language.oop5.cloning.php) – Phil