Подтвердить что ты не робот

Сохранение ключа индекса массива при сортировке многомерного массива с помощью PHP

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 и т.д.) исчезает при его сортировке. Я хотел бы сохранить индексы массива.

Как я могу это сделать?

4b9b3361

Ответ 1

Я думаю, что вам нужно uasort -

FROM PHP DOC

Сортировка массива с пользовательской функцией сравнения и поддержка ассоциации индексов

Пример

  uasort($stats, 'compare');