У меня есть этот огромный массив, который я извлекаю из 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"]); });