вторая сортировка с помощью php usort

Итак, Ive получил довольно большой массив данных и должен сортировать их по двум критериям.

Существуют переменные $data['important'] и $data['basic'] .

Они простые числа, и я использую uasort для сортировки $data во-первых важными, а затем базовыми.

Так

 Important | Basic 10 | 8 9 | 9 9 | 7 7 | 9 

Функция usort – простая

 public function sort_by_important($a, $b) { if ($a[important] > $b[important]) { return -1; } elseif ($b[important] > $a[important]) { return 1; } else { return 0; } } 

Как я могу повторно отсортировать массив со второй переменной и сохранить важный порядок?

Всем спасибо.

РЕДАКТИРОВАТЬ

Как насчет добавления третьей опции сортировки после этого? Так важно> Основные> Меньше

Вы действительно должны использовать array_multisort() ,

 // Obtain a list of columns foreach ($data as $key => $row) { $important[$key] = $row['important']; $basic[$key] = $row['basic']; } array_multisort($important, SORT_NUMERIC, SORT_DESC, $basic, SORT_NUMERIC, SORT_DESC, $data); 

но если вы должны использовать usort() :

 public function sort_by_important($a, $b) { if ($a[important] > $b[important]) { return -1; } elseif ($b[important] > $a[important]) { return 1; } else { if ($a[basic] > $b[basic]) { return -1; } elseif ($b[basic] > $a[basic]) { return 1; } else { return 0; } } } 

Почему бы просто не использовать array_multisort ()

 public function sort_by_important($a, $b) { if ($a['Important'] > $b['Important']) { return -1; } elseif ($b['Important'] > $a['Important']) { return 1; } else { if ($a['Basic'] > $b['Basic']) { return -1; } elseif ($b['Basic'] > $a['Basic']) { return 1; } else { return 0; } } }