PHP-多维数组排序-问题
我目前正在从事一个使用JSON转换成关联多维数组的项目,我遇到了一些问题。我的数组如下所示:PHP-多维数组排序-问题,php,associative-array,sorting,Php,Associative Array,Sorting,我目前正在从事一个使用JSON转换成关联多维数组的项目,我遇到了一些问题。我的数组如下所示: Array ( [IS-4] => Array ( [0] => Array ( [player] => Bulgerian_Soldier [dmg] => 241138 [battles] => 113
Array
(
[IS-4] => Array
(
[0] => Array
(
[player] => Bulgerian_Soldier
[dmg] => 241138
[battles] => 113
[avg_dmg] => 2134
)
[1] => Array
(
[player] => Lt_Towerladder
[dmg] => 106841
[battles] => 52
[avg_dmg] => 2055
)
[2] => Array
(
[player] => Timroden
[dmg] => 1090983
[battles] => 686
[avg_dmg] => 1590
)
[3] => Array
(
[player] => wunahokalugi
[dmg] => 235883
[battles] => 129
[avg_dmg] => 1829
)
[clan_avg_dmg] => 1709
)...
我试图做的是按avg\u dmg
对is-4
中的所有数组进行排序,但没有成功。我使用以下方法对所有数据进行排序
$tanks_dd = array();
foreach($tanks as $tankname => $tank) {
$tanks_dd[$tankname] = array();
$dmg_max = 0;
$total_dmg = 0;
$battles = 0;
for($i=0; $i < count($tank); $i++) {
$player = $tanks[$tankname][$i];
if($player['avg_dmg'] > $dmg_max) {
$dmg_max = $player['avg_dmg'];
array_unshift($tanks_dd[$tankname], $tanks[$tankname][$i]);
} else {
array_push($tanks_dd[$tankname], $tanks[$tankname][$i]);
}
$total_dmg = $total_dmg + $player['dmg'];
$battles = $battles + $player['battles'];
}
$tanks_dd[$tankname]['clan_avg_dmg'] = $battles == 0 ? 0 : round($total_dmg / $battles);
}
$tanks\u dd=array();
foreach($tanks as$tankname=>$tank){
$tanks_dd[$tankname]=数组();
$dmg_max=0;
$total_dmg=0;
美元=0;
对于($i=0;$i$dmg_max){
$dmg_max=$player['avg_dmg'];
阵列移动($tanks\u dd[$tankname],$tanks[$tankname][$i]);
}否则{
阵列推送($tanks\u dd[$tankname],$tanks[$tankname][$i]);
}
$total_dmg=$total_dmg+$player['dmg'];
$battles=$battles+$player['battles'];
}
$tanks_dd[$tankname]['clan_avg_dmg']=$battles==0?0:回合($total_dmg/$battles);
}
您需要使用php的usort:
因为您只想按“avg_dmg”对$tanks_dd['IS-4']的内容进行排序,所以下面的代码应该可以做到这一点:
usort($tanks_dd['IS-4'],function($a,$b){
return $a['avg_dmg']>$b['avg_dmg'];
});
//$tanks_dd['IS-4'] is now sorted by avg_dmg
如果你想得太多的话,这会让你看到事情是多么的复杂。感谢您的解决方案和快速响应。