Сортировка дат

Q_BASIC

Хранитель порядка
Регистрация
30 Ноя 2013
Сообщения
516
Реакции
1.240
Приветствую,

Как быстрее сортировать даты в массиве:
Из 21.11.17, 13.10.17, 30.11.16 получить 30.11.16, 13.10.17, 21.11.17

Вообще могу, но чего-то толкового ничего не приходит, только переборами долгими

Array
(
[10.12.17] => 41
[09.12.17] => 0
[08.12.17] => 0
[07.12.17] => 0
[06.12.17] => 0
[05.12.17] => 0
[04.12.17] => 0
[03.12.17] => 0
[02.12.17] => 0
[01.12.17] => 0
[30.11.17] => 40
[29.11.17] => 218
[28.11.17] => 577
[27.11.17] => 343
[26.11.17] => 241
[25.11.17] => 5
[24.11.17] => 0
[23.11.17] => 0
[22.11.17] => 0
[21.11.17] => 0
[20.11.17] => 0
[19.11.17] => 0
[18.11.17] => 0
[17.11.17] => 0
[16.11.17] => 5
[15.11.17] => 17
[14.11.17] => 21
[13.11.17] => 0
[12.11.17] => 0
[11.11.17] => 0
[1.12.17] => 9
[2.12.17] => 12
[3.12.17] => 16
[7.12.17] => 4
[8.12.17] => 138
[9.12.17] => 478
)
 
Последнее редактирование:
Стандартные функции пробовали? Быстрее, чем уже написано на Си, не напишете.
Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование:
Стандартные функции пробовали? Быстрее, чем уже написано на Си, не напишете.
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
У какой функцией сортировать?
Array
(
[10.12.17] => 41
[09.12.17] => 0
[08.12.17] => 0
[07.12.17] => 0
[06.12.17] => 0
[05.12.17] => 0
[04.12.17] => 0
[03.12.17] => 0
[02.12.17] => 0
[01.12.17] => 0
[30.11.17] => 40
[29.11.17] => 218
[28.11.17] => 577
[27.11.17] => 343
[26.11.17] => 241
[25.11.17] => 5
[24.11.17] => 0
[23.11.17] => 0
[22.11.17] => 0
[21.11.17] => 0
[20.11.17] => 0
[19.11.17] => 0
[18.11.17] => 0
[17.11.17] => 0
[16.11.17] => 5
[15.11.17] => 17
[14.11.17] => 21
[13.11.17] => 0
[12.11.17] => 0
[11.11.17] => 0
[1.12.17] => 9
[2.12.17] => 12
[3.12.17] => 16
[7.12.17] => 4
[8.12.17] => 138
[9.12.17] => 478
)
 
Там перед сравнением нужно развернуть дату.
PHP:
uksort(
    $array,
    function ($a, $b) {
        $a = DateTime::createFromFormat('d.m.y', $a)->format('Y.m.d');
        $b = DateTime::createFromFormat('d.m.y', $b)->format('Y.m.d');
        return strcmp($a, $b);
    }
);
 
А если короче, типа $a->getTimestamp()
 
  • Нравится
Реакции: lag
Назад
Сверху