按分数排名相同分数相同排名

731 阅读1分钟
public function demo()
{//数据库倒序取出
    $users = [['id'=>1,'name'=>'张三','fens'=>100],['id'=>2,'name'=>'lisi','fens'=>100],['id'=>3,'name'=>'ss','fens'=>90],['id'=>4,'name'=>'aa','fens'=>90],['id'=>5,'name'=>'bb','fens'=>80],['id'=>6,'name'=>'cc','fens'=>70]];
    $scores = array_column($users,'fens');
    foreach ($scores as $k => $fen){
        $users[0]['rank'] = 1;//干掉第一个
        if($k!=0){
            if($users[$k]['fens']==$users[$k-1]['fens']){//第二个开始做对比
                $users[$k]['rank'] = $users[$k-1]['rank'];//相同取第一个得排名
            }else{
                $users[$k]['rank'] = $users[$k-1]['rank']+1;//不同取第一个得排名加1
            }
        }
    }
    var_dump($users);die;
}