Страницы

Поиск по вопросам

воскресенье, 8 декабря 2019 г.

Сортировка по дате в массиве?

#php #массивы


Есть такой массив:

Array
(
    [0] => Array
        (
            [date] => 01.09.2016
            [sum] => 450
        )

    [1] => Array
        (
            [date] => 31.08.2016
            [sum] => 156
        )

    [2] => Array
        (
            [date] => 02.09.2016
            [sum] => 888
        )

)


Хочу сделать сортировку по дате, как её правильно сделать?
    


Ответы

Ответ 1



function cmp($a, $b) { if ($a["date"] == $b["date"]) { return 0; } return (strtotime($a["date"]) < strtotime($b["date"])) ? -1 : 1; } $a = Array( Array("date" => "01.09.2016", "sum" => "450"), Array("date" => "31.08.2016", "sum" => "156"), Array("date" => "02.09.2016","sum" => "888")); usort($a, "cmp"); var_dump($a);

Ответ 2



Так как решение через usort уже предложили, предложу решение через array_multisort, которое будет быстрее на больших обьемах данных, но требует извлечения колонки из исходного массива, но можно выбрать еще одну колонку и отсортировать по второй исходный массив. $dateArray = []; foreach($yourArray as $key=>$arr){ $dateArray[$key]=$arr['date']; } array_multisort($dateArray, SORT_STRING, $yourArray); var_dump($yourArray); Проверено на локальной машине, 100 000 элементов сортировалось 1 секунду 20 мс через usort, а через array_multisort 280 мс.

Комментариев нет:

Отправить комментарий