#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 мс.
Комментариев нет:
Отправить комментарий