Я искал это, и похоже, что все это похоже на «обычай» на основе исходной структуры массива плаката.PHP Custom Sort Multi-Dimensional Array by DateTime Поле
Я изо всех сил пытаюсь получить массив, отсортированный по клавише [DateTime] каждой записи. Я бы хотел, чтобы они отсортировали Ascending (новейшее datetime с самым высоким индексом массива) и хотели бы сохранить структуру массива и ключи, если это возможно.
Array
(
[0] => Array
(
[Source] => SimpleXMLElement Object
(
[0] => RTU-12 Merchandise Support, Fan Status Switch
)
[EventType] => SimpleXMLElement Object
(
[0] => Alarm Recall
)
[Description] => SimpleXMLElement Object
(
[0] => No Flow
)
[DateTime] => 07-25-2015 20:09:47
[Priority] => SimpleXMLElement Object
(
[0] => Medium
)
[SubSystemKey] => SimpleXMLElement Object
(
[0] => 2
)
[ViewKey] => SimpleXMLElement Object
(
[0] => 7
)
)
[1] => Array
(
[Source] => SimpleXMLElement Object
(
[0] => RTU-03 Checkout Area, Fan Status Switch
)
[EventType] => SimpleXMLElement Object
(
[0] => Alarm Recall
)
[Description] => SimpleXMLElement Object
(
[0] => No Flow
)
[DateTime] => 07-25-2015 20:09:44
[Priority] => SimpleXMLElement Object
(
[0] => Medium
)
[SubSystemKey] => SimpleXMLElement Object
(
[0] => 2
)
[ViewKey] => SimpleXMLElement Object
(
[0] => 7
)
)
... НЕКОТОРЫЕ ПОКАЗАТЕЛИ снимающие для удобочитаемости ...
[12] => Array
(
[Source] => SimpleXMLElement Object
(
[0] => ~RackA\SGr2\Cmp4, Proof of Running
)
[EventType] => SimpleXMLElement Object
(
[0] => Alarm Recall
)
[Description] => SimpleXMLElement Object
(
[0] => No Proof
)
[DateTime] => 07-25-2015 19:39:13
[Priority] => SimpleXMLElement Object
(
[0] => Medium
)
[SubSystemKey] => SimpleXMLElement Object
(
[0] => 1
)
[ViewKey] => SimpleXMLElement Object
(
[0] => 2
)
)
[13] => Array
(
[Source] => SimpleXMLElement Object
(
[0] => ~RackC\SGr1, Suction Pressure
)
[EventType] => SimpleXMLElement Object
(
[0] => Alarm
)
[Description] => SimpleXMLElement Object
(
[0] => Pressure too high
)
[DateTime] => 07-25-2015 19:14:21
[Priority] => SimpleXMLElement Object
(
[0] => Medium
)
[SubSystemKey] => SimpleXMLElement Object
(
[0] => 1
)
[ViewKey] => SimpleXMLElement Object
(
[0] => 4
)
)
[Count] => 14
[NewEvents] => 14
[Result] => Success
)
Вот что я пытался до сих пор:
function date_compare($a, $b)
{
$t1 = strtotime($a['DateTime']);
$t2 = strtotime($b['DateTime']);
return $t1 > $t2;
}
usort($alarms, 'date_compare');
Мои результаты просто несортированный (и казалось бы, сломанной организации). Я не слишком искусен с помощью usort, так что ищу некоторые рекомендации.
Спасибо!
Ах, даже не думал, отлаживать это. Это «работает» до сих пор, но, похоже, лишило мои ключевые имена из внешнего массива, поэтому я остался с: [0] => 14 [1] => 14 // Используется для произношения [NewEvents ] => 14 [16] => Успех // Используется, чтобы сказать [Результат] => Успех –
Попробуйте 'uasort()' @SourceMatters – spenibus
Это сделало трюк. Тем не менее, я все еще получаю странные результаты. Я пробовал возвращать $ t1 <$ t2; и возвратите $ t1> $ t2 ;. Когда я использую return $ t1> $ t2; и делаю print_r, он сначала печатает самые высокие индексы. Время сортируется, но «старое» дата-время - это индекс 13 (но сначала он печатает). Это вызывает проблемы, когда я перехожу к ним через цикл for позже. Это то, что я получаю: http://codepad.org/EFwjF3n9 –