как отсортировать многомерный массив с помощью внутреннего ключа

У меня есть этот огромный массив, который я извлекаю из API для BattleField Bad Company 2, и статистика солдат можно вытащить в виде многомерного массива с внутренним массивом для каждого солдата, однако API sormats он сортирует солдат по имени в алфавитном порядке, Я хочу сортировать их по рангу (это всего лишь еще один ключ внутри этого массива солдат). Ив пытался понять это в течение нескольких дней, у кого есть идеи? (т. е. сортировать массив по $ arr [players] [] [rank]

вот немного массива

 массив
 (
     [игроки] => Массив
         (
             [0] => Массив
                 (
                     [имя] => bigjay517
                     [rank] => 29
                     [rank_name] => ВТОРОЙ ЛЕЙТЕНАНТ II
                     [ветеран] => 0
                     [оценка] => 979440
                     [level] => 169
                     [убивает] => 4134
                     [смертей] => 3813
                     [время] => 292457.42
                     [elo] => 319.297
                     [form] => 1
                     [date_lastupdate] => 2010-03-30T14: 06: 20 + 02: 00
                     [count_updates] => 13
                     [general] => Массив
                         (
                             [точность] => 0.332
                             [dogr] => 86
                             [dogt] => 166
                             [elo0] => 309,104
                             [elo1] => 230,849
                             [игры] => 384
                             [goldedition] => 0
                             [убытки] => 161
                             [sc_assault] => 146333
                             [sc_award] => 567190
                             [sc_bonus] => 35305
                             [sc_demo] => 96961
                             [sc_general] => 264700
                             [sc_objective] => 54740
                             [sc_recon] => 54202
                             [sc_squad] => 53210
                             [sc_support] => 70194
                             [sc_team] => 21215
                             [sc_vehicle] => 44560
                             [slevel] => 0
                             [spm] => 0
                             [spm0] => 0
                             [spm1] => 0
                             [srank] => 0
                             [sveteran] => 0
                             [teamkills] => 67
                             [udogt] => 0
                             [побед] => 223
                         )

Вы можете отсортировать любой массив по любым критериям, используя usort ()

В дополнение к другим ответам, если вам нужно сортировать по динамическому полю (только известному во время выполнения), вы можете использовать анонимную функцию и передать это поле с помощью ключевого слова use :

 $field = "some_dynamic_value"; usort($rows, function($a, $b) use ($field) { return strcmp($a[$field], $b[$field]); }); 

Ну вот.

$ playergoop – это массив, который вы предоставили.

Этот тип сортируется по поддиапазону «ранг», но он делает это в порядке возрастания. Если вы хотите по убыванию, вы можете переключить> на <.

 function sorter($one, $two) { return ($one['rank'] > $two['rank']); } usort($playergoop['players'], sorter); 

Чтобы упорядочить спуск массива, я использовал

 function sorterdesc($one, $two) { return ($two['cont'] - $one['cont']); } 

Для восхождения:

 function sorterasc($one, $two) { return ($one['cont'] - $two['cont']); } 

Подобно этому он отлично работает с числовыми значениями

Когда вы используете PHP 5.3 и выше, вы можете использовать анонимную встроенную функцию для сортировки:

 usort($obj, function ($a, $b) { return strcmp($a["name"], $b["name"]); });