php - 如何在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);
}
解决方案
您可以使用 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);
请注意降序和升序比较中参数的顺序。
推荐阅读
- mongodb - 我需要为从 mongodb 读取的春季批次运行测试
- wordpress - 如果用户未登录但不重定向 googlebot,则重定向到登录页面
- python - 如何修复“numpy.float64”对象不能解释为整数”
- asp.net - Google javascript map api 在 VS 2017 中有效,但在发布到 Azure 时无效
- dart - Flutter,如何让我的原材料纽扣更大更紧密地组合在一起。
- python - 如何使用 Python、GDAL、ArcPy 将 .grib 文件转换为具有正确投影的 GeoTIFF
- sql - 如何将属性插入保存为 nvarchar(max) 的 xml 数据中
- apache-spark - Spark 在多个执行器上分发任务
- ubuntu - 如何修复 Ubuntu 应用程序没有音频?
- google-apps-script - 无法将开发者元数据添加到行