【发布时间】:2019-11-09 16:37:45
【问题描述】:
我有一个如下所示的数组:
Array(
[172.17.0.2] => Array
(
[okok] => 1
)
[172.17.0.1] => Array
(
[wp] => 3
[ojopj] => 1
[opjopj] => 1
)
)
我需要能够计算二级内容,然后根据这些总数对顶级数组进行排序。
例如,我的结果数组看起来像这样:
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 位。根据我目前的代码,我只能设想创建更多的 for 循环来构建一个新数组,对其进行排序等等开。
有没有更有效的方法来达到我需要的结果?
【问题讨论】:
-
@EliasSoares 除了这个问题上有完整的 Javascrip 标记
-
您说的是“计数”,但您的意思似乎是“总和”。
-
@Barmar 确实如此。
-
@RiggsFolly 你是对的。我选择了错误的问题来建议重复。但我很确定 SO 上有很多这样的问题
标签: php arrays sorting multidimensional-array