PHP的二维数组按指定键名排序

1898

使用 usort() 函数

usort() 函数可通过用户自定义的比较函数对数组进行排序。


// 示例二维数组

$students = [

    ['name' => 'Alice', 'score' => 85],

    ['name' => 'Bob', 'score' => 92],

    ['name' => 'Charlie', 'score' => 78]

];


// 定义排序函数,按 score 键升序排序

usort($students, function ($a, $b) {

    return $a['score'] - $b['score'];

});


// 输出排序后的数组

print_r($students);

?>


代码解释

首先定义了一个二维数组 $students,每个元素是一个包含 name 和 score 键的关联数组。

然后使用 usort() 函数对 $students 数组进行排序。usort() 接受一个用户自定义的比较函数,该函数接受两个参数 $a 和 $b,分别代表数组中的两个元素。

在比较函数中,通过 $a['score'] - $b['score'] 来确定元素的顺序。如果结果小于 0,则 $a 排在 $b 前面;如果结果大于 0,则 $a 排在 $b 后面;如果结果等于 0,则它们的相对顺序不变。

若要按降序排序,可将比较函数改为 return $b['score'] - $a['score'];。


使用 array_multisort() 函数

array_multisort() 函数可以对多个数组或多维数组进行排序。

?php

// 示例二维数组

$students = [

    ['name' => 'Alice', 'score' => 85],

    ['name' => 'Bob', 'score' => 92],

    ['name' => 'Charlie', 'score' => 78]

];


// 提取要排序的键值到一个新数组

$scores = array_column($students, 'score');


// 按 score 键升序排序

array_multisort($scores, SORT_ASC, $students);


// 输出排序后的数组

print_r($students);

?>


代码解释

同样先定义了二维数组 $students。

使用 array_column() 函数从 $students 数组中提取 score 键的值,存储到 $scores 数组中。

调用 array_multisort() 函数,第一个参数是 $scores 数组,第二个参数 SORT_ASC 表示升序排序,第三个参数是要排序的原始二维数组 $students。

若要按降序排序,可将第二个参数改为 SORT_DESC。


升级版:

通过在比较函数中依次比较多个键名的值,就能实现按多个键名排序。

// 定义排序函数,先按 score 降序排序,score 相同时按 age 升序排序

usort($students, function ($a, $b) {

    // 先比较 score 键的值

    if ($a['score'] !== $b['score']) {

        return $b['score'] - $a['score'];

    }

    // score 相同时,比较 age 键的值

    return $a['age'] - $b['age'];

});


php求两个数组的差集

要计算两个数组的差集,即找出在第一个数组中存在但在第二个数组中不存在的元素。...

无人货架批量大规模上架商品解决方案

架构设计之初未考虑到业务需要批量上架商品,几万个逐一生成货架商品需要耗费大量人力,而货架商品的结构数量都一样。...

物业小区无人销售智能货架方案

小区无人值守货架销售的建设方案,从三个方面阐述货架集成建设,投入使用,系统管理。...

厨余收运管理系统迭代开发,回收系统优化升级

完成基础数据开发,试运行一段时间后,在数据沉淀的基础上对数据进行挖掘,对业务处理进行优化升级。...

餐厨油脂再生资源收运回收管理系统方案

通过互联网+改变餐厨收运回收传统工作方式,移动手机助力系统提供工作效率、’管理效率,数据电子化打造收运大数据建设。...

医馆诊所管理系统

实现中医馆中诊所,理疗的业务处理,分为小程序用户端,医生端,管理端,PC管理端,PC服务台,PC医生端...

thinkphp8安装VIEW,多应用,验证码

官方THKPHP8默认只有单应用一个控制器,其他插件可按需安装,通常需要VIEW和多应用...

sqlserver中的nvarchar和varchar的区别

数据库表中nvarchar和varchar都可以用来表示字符的存储类型。...

微信接口开发返回码一览表

返回错误码对照表...

高德地图mark按类型批次显示不同的颜色

大量数据点显示在地图上,通常使用海量点的API展示,通过建立多个海量点达到按分类显示不同颜色的mark,看起来更直观...

0.089301s