У меня есть массив, который выглядит так:
Array(
[172.17.0.2] => Array
(
[okok] => 1
)
[172.17.0.1] => Array
(
[wp] => 3
[ojopj] => 1
[opjopj] => 1
)
)
Мне нужно иметь возможность подсчитать содержимое 2-го уровня и затем отсортировать массивы верхнего уровня на основе этих итогов.
Так, например, мой результирующий массив будет выглядеть примерно так:
Array(
[172.17.0.2] => 1
[172.17.0.1] => 5
)
В идеале я хочу отсортировать по убыванию и показать только первые 5 результатов.
В настоящее время мой код состоит из следующего:
foreach ($iplog as $ip => $arr) {
foreach ($arr as $user => $count) {
$count_desc = $count_desc + $count;
}
$output .= $count_desc;
$output .= '</span><hr style="width:100%">';
}
Однако это не заботится о какой-либо сортировке или ограничении результатов до верхних 5. На основании кода, который у меня есть до сих пор, я могу только предусмотреть создание дополнительных циклов для создания нового массива, его сортировки и так далее.
Надеюсь, есть гораздо более эффективный способ достижения нужных мне результатов.
Заранее спасибо.