array(10) { [1019]=> array(3) { ["quantity"]=> int(0) ["revenue"]=> int(0) ["seller"]=> string(5) "Lenny" } [1018]=> array(3) { ["quantity"]=> int(5) ["revenue"]=> int(121) ["seller"]=> string(5) "Lenny" } [1017]=> array(3) { ["quantity"]=> int(2) ["revenue"]=> int(400) ["seller"]=> string(6) "Anette" } [1016]=> array(3) { ["quantity"]=> int(25) ["revenue"]=> int(200) ["seller"]=> string(6) "Samuel" } [1015]=> array(3) { ["quantity"]=> int(1) ["revenue"]=> int(300) ["seller"]=> string(6) "Samuel" } [1014]=> array(3) { ["quantity"]=> string(2) "41" ["revenue"]=> string(5) "18409" ["seller"]=> string(6) "Samuel" } }
Я работаю с массивом выше. Этот многомерный массив называется $stats
.
Я хотел бы отсортировать этот массив по количеству.
Так что многоадресный массив имеет свой первый массив 1016, то 1018, 1017 и так далее.
Я сделал это:
function compare($x, $y) { if ( $x['quantity'] == $y['quantity'] ) return 0; else if ( $x['quantity'] > $y['quantity'] ) return -1; else return 1; } usort($stats, 'compare');
Который работает просто отлично!
Но проблема в том, что индекс заголовка (ID, 1019, 1018, 1017 и т. Д.) Исчезает при его сортировке. Я хотел бы сохранить индексы массива.
Как я могу это сделать?
Я думаю, что вам нужен uasort
–
ОТ PHP DOC
Сортируйте массив с пользовательской функцией сравнения и поддерживайте ассоциацию индексов
пример
uasort($stats, 'compare');