PHP сортирует многомерный массив по нескольким критериям

  • Автор темы Vova4
  • 18
  • Обновлено
  • 15, May 2024
  • #1
Я пишу код на PHP и имею многомерный массив. Я хотел бы отсортировать свой массив. Самый важный критерий – общее количество баллов. Второй критерий — имя.

Я не хочу уничтожать индексы.

Я пробовал usort, uasort, uksort и т. д., но это не работает. Как уже было сказано, массив следует отсортировать следующим образом: 1 место по [информация][всего], по убыванию 2 место по [информация][имя], по возрастанию
  foreach ($array as &$item)

{

uasort($item, function ($a, $b)

{

if ($a['info']['total'] == $b['info']['total'])

{

return $b['info']['name'] - $a['info']['name'];

}

else

{

return $b['info']['total'] - $a['info']['total'];

}

});

}
Код (разметка): Итак, результат должен быть таким:
  Array ( [380] => Array ( [4] => Array ( [6] => Array () ) [info] => Array ( [name] => Davis Ben [total] => 14500 ) [2] => Array ( [5] => Array () ) ) [183] => Array ( [3] => Array ( [1] => Array () ) [1] => Array ( [8] => Array () ) [info] => Array ( [name] => Doe John [total] => 4800 ) ) )
Код (разметка): Я пробовал это:
  Array ( [183] => Array ( [3] => Array ( [1] => Array () ) [1] => Array ( [8] => Array () ) [info] => Array ( [name] => Doe John /* 2nd criteria */ [total] => 4800 /* 1st criteria */ ) ) [380] => Array ( [4] => Array ( [6] => Array () ) [info] => Array ( [name] => Davis Ben /* 2nd criteria */ [total] => 14500 /* 1st criteria */ ) [2] => Array ( [5] => Array () ) ) )
PHP:

Vova4


Рег
27 May, 2013

Тем
1

Постов
1

Баллов
11
  • 10, Jun 2024
  • #2
Вот:
  uasort($array, function($a, $b)

{

if ($a['info']['total'] == $b['info']['total'])

{

return strcmp($a['info']['name'], $b['info']['name']); # ascending

}

return $b['info']['total'] - $a['info']['total']; # descending

});
PHP:
 

Неизвестный


Рег
17 Oct, 2012

Тем
1

Постов
2

Баллов
12
Тем
49554
Комментарии
57426
Опыт
552966

Интересно