Мне нужно отсортировать массив по трем значениям. Вот базовая настройка того, как настраивается массив:
$arr = array(
'1' => array(
'start' => '1234',
'mh' => '12',
'status' => '1'
),
'2' => array(
'start' => '9874',
'mh' => '3',
'status' => '9'
),
'3' => array(
'start' => '5678',
'mh' => '6',
'status' => '2'
)
);
В настоящее время мне нужно было только отсортировать по 2 значениям, для которых пригодился array_multisort. Теперь мне нужно отсортировать все три значения в следующем порядке: Статус (низкий) -> Пуск (низкий) -> МЗ (высокий). Это означает, что сначала будет самый низкий статус, затем самый низкий старт, а затем самый высокий MH.
Любая помощь будет оценена.
Общее решение для сортировки по нескольким столбцам:
usort($arr,function($a,$b) {
return ($a['status'] - $b['status']) // status ascending
?: ($a['start'] - $b['start']) // start ascending
?: ($b['mh'] - $a['mh']) // mh descending
;
});
Других решений пока нет …