首页 > 解决方案 > 如何在php中对数组进行降序和升序排序?

问题描述

我有一个由学生班级中的 GPA 和学生年龄组成的数组。如果两个学生的 GPA 相同,我必须按降序排列 GPA,然后按升序排列年龄。

这是学生班:

class Student
{
    private $gpa;
    private $age;
    public function __construct($gpa, $age)
    {
        $this->gpa = $gpa;
        $this->age = $age;
    }
    public function getGPA()
    {
        return $this->gpa;
    }
    public function getAge()
    {
        return $this->age;
    }
}

到目前为止,我尝试在学生的课堂上创建两个函数:

public function gpaRange() {
        return rsort($gpa);
}

public function ageRage() {
        return sort($age);
}

标签: php

解决方案


您可以使用 usort() 和它自己的比较函数来对一组学生类对象进行排序。

$sortFctGpaAge = function($a, $b){
  $cmp = $b->getGPA() <=> $a->getGPA();  //desc
  if($cmp == 0) $cmp = $a->getAge() <=> $b->getAge(); //asc 
  return $cmp;
};

usort($students,$sortFctGpaAge);

请注意降序和升序比较中参数的顺序。


推荐阅读