PHP-多维数组排序-问题

PHP-多维数组排序-问题,php,associative-array,sorting,Php,Associative Array,Sorting,我目前正在从事一个使用JSON转换成关联多维数组的项目,我遇到了一些问题。我的数组如下所示: Array ( [IS-4] => Array ( [0] => Array ( [player] => Bulgerian_Soldier [dmg] => 241138 [battles] => 113

我目前正在从事一个使用JSON转换成关联多维数组的项目,我遇到了一些问题。我的数组如下所示:

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

如果你想得太多的话,这会让你看到事情是多么的复杂。感谢您的解决方案和快速响应。