Попробуйте usort . Если вы все еще используете PHP 5.2 или более раннюю версию, вам сначала нужно определить функцию сортировки:
function sortByOrder($a, $b) {
return $a['order'] - $b['order'];
}
usort($myArray, 'sortByOrder');
Начиная с PHP 5.3, вы можетеиспользуйте анонимную функцию:
usort($myArray, function($a, $b) {
return $a['order'] - $b['order'];
});
И, наконец, в PHP 7 вы можете использовать оператор космического корабля :
usort($myArray, function($a, $b) {
return $a['order'] <=> $b['order'];
});
Чтобы расширить это до многомерной сортировки,ссылаться на второй / третий элементы сортировки, если первый равен нулю - лучше всего объяснить ниже.Вы также можете использовать это для сортировки по подэлементам.
usort($myArray, function($a, $b) {
$retval = $a['order'] <=> $b['order'];
if ($retval == 0) {
$retval = $a['suborder'] <=> $b['suborder'];
if ($retval == 0) {
$retval = $a['details']['subsuborder'] <=> $b['details']['subsuborder'];
}
}
return $retval;
});
Если вам нужно сохранить ассоциации клавиш, используйте uasort()
- см. сравнение функций сортировки массива в руководстве