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