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"

}

}

相关推荐
三844几秒前
redis三大机制:配置、持久化、主从复制(getshell 原理地基)
开发语言·php
G佳伟29 分钟前
宝塔面板打不开且 Bt-Panel 未运行:从 HTTP 502 到 gevent 缺失的完整排查与修复
网络协议·http·php
名字还没想好☜1 小时前
Go 的 TCP 粘包与拆包:用长度前缀协议 + bufio 正确读消息
后端·tcp/ip·golang·go·php
kruptos12 小时前
分布式系统怎么“选主“?Raft 共识一次讲清
开发语言·分布式·php·共识算法
Figo_Cheung15 小时前
Figo基于RNC理论的宇宙演化第七纪元猜想
开发语言·php
WWJA王文举16 小时前
FreeRTOS事件组和任务通知详解:为什么任务通知比队列更轻量?
开发语言·php
PHP实战开发录19 小时前
PHP权限系统设计为什么越改越复杂
系统架构·php·开发
Zenova EdgeOS20 小时前
工业网关重试机制:从固定间隔到指数退避的工程实战
开发语言·网络·php
Figo_Cheung21 小时前
Figo共振网络宇宙演化论(RNC) :从原初对称破缺到全息大和谐的演化路径研究
开发语言·php·量子计算
小溪学编程1 天前
Java InputStream 详解:从基础到实战
java·python·php