- 15, May 2024
- #1
Я пишу код на PHP и имею многомерный массив. Я хотел бы отсортировать свой массив. Самый важный критерий – общее количество баллов. Второй критерий — имя.
Я не хочу уничтожать индексы.
Я пробовал usort, uasort, uksort и т. д., но это не работает.
Как уже было сказано, массив следует отсортировать следующим образом:
1 место по [информация][всего], по убыванию
2 место по [информация][имя], по возрастанию
Код (разметка): Итак, результат должен быть таким:
Код (разметка): Я пробовал это:
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: