当前位置: 首页 > news >正文

PHP怎么按多个字段排序_usort自定义比较函数【方法】

多字段排序应手写usort回调函数逐级比较,优先用宇航员操作符;避免拼接表达式破坏稳定性,注意字符串locale、大小写及空值处理,array_multisort不支持混合方向且容错差。usort 里怎么写多字段比较逻辑直接在 usort 的回调函数里用多个 if 判断字段优先级,别想着套一层现成的“通用排序函数”——PHP 没内置多字段 usort 工具,手写最稳。常见错误是把多个字段用 strcmp 或减法硬拼成一个表达式,比如 ($a['age'] - $b['age']) + ($a['name'] $b['name']),这会破坏排序稳定性,字段权重混乱,结果不可控。正确做法是逐级比较:先比第一字段,相等再比第二字段,依此类推。PHP 7+ 推荐用宇航员操作符 ,它天然支持字符串、数字、null,且返回 -1/0/1,语义清晰。示例:按 status(字符串,'active' > 'pending' > 'draft')升序,再按 created_at(时间戳)降序:立即学习“PHP免费学习笔记(深入)”;usort($items, function($a, $b) { // 第一字段:status 自定义顺序 $status_order = ['draft' => 0, 'pending' => 1, 'active' => 2]; $cmp = ($status_order[$a['status']] ?? -1) <=> ($status_order[$b['status']] ?? -1); if ($cmp !== 0) return $cmp;<pre class='brush:php;toolbar:false;'>// 第二字段:created_at 降序 → 翻转比较方向return $b['created_at'] <=> $a['created_at'];});字符串字段排序要注意 locale 和大小写直接用 $a['name'] $b['name'] 是字节序比较,中文可能乱序,英文大小写敏感('Z' 成立),线上数据常因此排错。如果要按用户习惯排序(比如中文拼音、英文忽略大小写),必须用 collator_compare 或 strnatcasecmp,不能依赖 。使用场景:后台列表展示、导出 Excel 前排序、API 返回前整理数据 —— 这些地方用户能直观看到顺序,错一点就明显。 Mokker AI AI产品图添加背景

http://www.jsqmd.com/news/643404/

相关文章:

  • SQL Server 2022 新语法:IS [NOT] DISTINCT FROM 彻底解决 NULL 比较难题
  • 手把手教学:用DeerFlow的Web界面轻松进行多轮研究对话
  • Cogito-v1-preview-llama-3B效果对比:在ChineseGLUE榜单全面领先
  • AI绘画小白必看:Z-Image-Turbo-辉夜巫女快速上手攻略
  • GTE-Base-ZH与LaTeX文档处理:智能编排学术论文参考文献
  • H3C IRF部署与排障实战指南:从端口绑定到配置一致性
  • 如何在CSS中正确加载本地JPG背景图片
  • OFA-Image-Caption效果对比评测:与CLIP、BLIP等主流图像描述模型对比
  • RexUniNLU新手教程:用统一模型同时做实体识别和情感分析,处理爬虫数据不再难
  • 智慧医疗中的诊断辅助与健康管理
  • 【AI Agent】AI Agent 智能体系统性知识体系
  • 扣子(Coze)进阶:AI赋能历史教育!打造沉浸式历史人物互动视频教程
  • 51单片机+ESP8266 MQTT协议下的智能火灾报警系统实战与内存优化
  • Autoware实车部署避坑指南(一)-- 从零搭建矢量地图与Unity工具链实战
  • 文墨共鸣大模型操作系统原理辅助教学:图解进程管理与文件系统
  • 别再为服务器账单发愁!元域资源调度与成本优化的三层架构实战
  • YOLO12多尺度检测效果展示:同一图像不同分辨率输入结果对比图集
  • 嵌入式工程师必看:用STM32CubeMX配置RMII以太网PHY的完整流程(以LAN8720A为例)
  • Windows本地AI新玩法:Docker Compose一键部署Ollama与Open WebUI,小白也能玩转私有大模型
  • 别再死记硬背了!用MATLAB动画演示,5分钟搞懂2ASK、2FSK、2PSK、2DPSK相干解调区别
  • CasRel开源可部署价值:替代商业NLP平台,年节省知识图谱构建成本超80%
  • Wan2.2-I2V-A14B性能测试:对比不同算法下的视频生成速度与质量
  • 光伏发电量计算中的辐照度标准解析与应用
  • 4月15日成都地区攀成钢产无缝钢管(8163-20#;外径20-108mm)现货报价 - 四川盛世钢联营销中心
  • 保姆级教程:用Python 3.6和pymilvus 1.1.0搞定Milvus向量数据库的增删改查
  • 重磅曝光!GPT-6 即将登场
  • 告别两阶段!用单个冻结的ConvNeXt-Large CLIP,7.5倍速搞定开放词汇分割(附代码)
  • 杰理之spi推灯有概率出现不亮灯【篇】
  • 理解CAP定理与BASE理论:分布式系统的理论基础
  • 概率论_深入解析概率公式中的符号:逗号(,)、竖线(|)、分号(;)及其运算优先级