PHP多维数组按指定字段排序usort自定义排序方法(或使用太空船操作符 <=> 进行比较,默认按升序排序)

有个需求,一个多维数组 list,要求按'sort'字段进行排序, list数组数据格式如下:

array(12) {

0=>

array(10) {

"id"=> "21005421"

"cnt"=> "2"

"pv"=> "651"

"uv"=> "606"

"g_name"=> string(51) "话费红包 10 元(支付宝话费立减金)ZM"

"order_rate"=> "14.52%"

"sort"=> "4"

}

1=>

array(10) {

"id"=> "21005422"

"cnt"=> "3"

"pv"=> "651"

"uv"=> "606"

"g_name"=> string(51) "话费红包 10 元(支付宝话费立减金)ZM"

"order_rate"=> "4.12%"

"sort"=> "2"

}

2=>

array(10) {

"id"=> "21005425"

"cnt"=> "2"

"pv"=> "651"

"uv"=> "606"

"g_name"=> string(51) "话费红包 10 元(支付宝话费立减金)ZM"

"order_rate"=> "11.02%"

"sort"=> "3"

}

}

可以用usort函数实现快速排序:

复制代码
//按数组值大小升序排序
usort($list,function($a, $b) {
    return $a['sort'] - $b['sort']; // 升序排序
});

// 或使用太空船操作符 <=> 进行比较,默认按升序排序

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

return a\['sort'\] \<=\> b'sort';

});

复制代码

执行后var_dump($list) 返回了预期的升序排序如下:

array(12) {

0=>

array(10) {

"id"=> "21005422"

"cnt"=> "3"

"pv"=> "651"

"uv"=> "606"

"g_name"=> string(51) "话费红包 10 元(支付宝话费立减金)ZM"

"order_rate"=> "4.12%"

"sort"=> "2"

}

1=>

array(10) {

"id"=> "21005425"

"cnt"=> "2"

"pv"=> "651"

"uv"=> "606"

"g_name"=> string(51) "话费红包 10 元(支付宝话费立减金)ZM"

"order_rate"=> "11.02%"

"sort"=> "3"

}

2=>

array(10) {

"id"=> "21005421"

"cnt"=> "2"

"pv"=> "651"

"uv"=> "606"

"g_name"=> string(51) "话费红包 10 元(支付宝话费立减金)ZM"

"order_rate"=> "14.52%"

"sort"=> "4"

}

}

相关推荐
2401_894915535 小时前
Geo优化系统源码部署搭建技术——PHP程序开发部署指南
开发语言·php
HH‘HH7 小时前
前端应用的离线暂停更新策略:原理、实现与最佳实践
开发语言·前端·php
xlq223228 小时前
高并发服务器day8(含服务器完整架构)
运维·服务器·php
twcc_come1 天前
安全策略配置实验报告
开发语言·php
weixin_BYSJ19871 天前
springboot3家政平台小程序--附源码00904
java·javascript·spring boot·python·django·flask·php
上海安当技术1 天前
车间电脑指纹登录怎么做?从 FIDO2 公钥体系到统一身份认证的技术拆解
开发语言·电脑·php
大黄说说2 天前
接口频繁超时、报错?后端常见排查思路总结
开发语言·php
Sagittarius_A*2 天前
【RCELABS】Level 1~4 —— 基础篇
靶场·php·ctf·代码审计·rce
海天鹰2 天前
PHP换行
php
moonsims3 天前
星闪在跨域无人化系统作用
开发语言·php