Php 根据总分获得单个学生的排名(位置)

Php 根据总分获得单个学生的排名(位置),php,mysql,codeigniter,Php,Mysql,Codeigniter,我想根据所有科目的总分显示单个学生的“排名”或“位置” 例如,如果一个学生的总分最高为99分,那么它应该返回排名第一的成绩。 另一名92分的学生应返回第二名。 如果两名学生的分数相同,均为90分,则应返回第三名 我不想把它们放在一张桌子里,只是一个显示器 这是我的问题 型号: 控制器: public function GetClassPosition($student_id, $session_id, $section_id, $class_id) { $data = $this-

我想根据所有科目的总分显示单个学生的“排名”或“位置”

例如,如果一个学生的总分最高为99分,那么它应该返回排名第一的成绩。 另一名92分的学生应返回第二名。 如果两名学生的分数相同,均为90分,则应返回第三名

我不想把它们放在一张桌子里,只是一个显示器

这是我的问题 型号:

控制器:

 public function GetClassPosition($student_id, $session_id, $section_id, $class_id)
    {
  $data = $this->primary_model->GetClassPosition($student_id, $session_id, $section_id, $class_id); 
        return $data->tot_score;
    }
序号:

 function mtordinal($number) 
      {
        $ends = array('TH','ST','ND','RD','TH','TH','TH','TH','TH','TH');
        if ((($number % 100) >= 11) && (($number%100) <= 13))
            return $number. 'th';
        else
            return $number. $ends[$number % 10];
    }
函数mtordinal($number)
{
$ends=数组('TH','ST','ND','RD','TH','TH','TH','TH','TH','TH','TH','TH','TH');
如果(($number%100)>=11)和($number%100)

显然,这会以列表形式显示结果。如何仅显示每个学生的职位?

显示“echo$CI->ordinal($number)”的示例数据……它的显示方式如下-第一、第二、第十三等
 function mtordinal($number) 
      {
        $ends = array('TH','ST','ND','RD','TH','TH','TH','TH','TH','TH');
        if ((($number % 100) >= 11) && (($number%100) <= 13))
            return $number. 'th';
        else
            return $number. $ends[$number % 10];
    }
 <?php
$scores2 = $CI->GetClassPosition($value->$student_id, $value->session_id, $value->section_id, $value->class_id); 
$scores = array_column($scores2, 'tot_score');
$pos = array_search($value->tot_score, $scores);
$number = $pos + 1;
echo $CI->ordinal($number);
?>