Php 按数组中值的计算值对foreach进行排序

Php 按数组中值的计算值对foreach进行排序,php,Php,我有一个数组,如下所示: $players = array( $player = array( 'name' => 'playername', 'speed' => '10', 'agility' => '10', 'influence' => '10' ) etc 然后,我根据速度、敏捷性和影响力的总和计算$score $sco

我有一个数组,如下所示:

$players = array(
    $player = array(
        'name'          => 'playername',
        'speed'         => '10',
        'agility'       => '10',
        'influence'     => '10'
    )
    etc
然后,我根据速度、敏捷性和影响力的总和计算$score

$score = $p['speed'] + $p['agility'] + $p['influence'];
如何在数组中循环,但将结果从最高的$score排序到最低的$score

PS->

您可以使用函数按自定义算法对其进行排序:

function score($player) {
    return $player['speed'] + $player['agility'] + $player['influence'];
}

function cmp($a, $b) {
    $scoreA = score($a);
    $scoreB = score($b);
    if($scoreA == $scoreB) {
        return 0;
    }
    return ($scoreA > $scoreB) ? -1 : 1;
}

usort($players, "cmp");

我只是在写这封信p+1这种情况在这里经常发生:因此,在这两个函数之后,我将对每个$players执行$p{…等等?你不再需要foreach了。它将按分数排序,而不必使用foreach循环。上面代码的唯一问题是,你不能将分数存储在任何地方,以防你再次需要它。你可以在生成分数的代码之前放入一个循环,然后使用上面的代码对数组排序。或者只是计算排序后的动态分数…它们几乎不需要计算。确实是托马斯,但看起来马克想根据分数打印玩家,所以他需要foreach。如果分数将用于其他地方,则我会将其存储在玩家数组中。如果速度、敏捷性和影响力始终是九位数或小数位数,请不要使用单个quotes。我以前从未在数组中看到过:$player=array。我不知道它是否还能工作,尽管我认为它会。但是,这不会起任何作用,你可以去掉$player=bit。数组将只是:$players=array数组…,array…;$player=bit没有任何作用。我很惊讶它能起作用。