Сортировка массива PHP по 3 значениям

Мне нужно отсортировать массив по трем значениям. Вот базовая настройка того, как настраивается массив:

$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.

Любая помощь будет оценена.

0

Решение

Общее решение для сортировки по нескольким столбцам:

usort($arr,function($a,$b) {
return ($a['status'] - $b['status']) // status ascending
?: ($a['start'] - $b['start']) // start ascending
?: ($b['mh'] - $a['mh']) // mh descending
;
});
2

Другие решения

Других решений пока нет …