php 8.4 中应优先使用内置排序函数而非手写快排;一维数组用 sort()/rsort(),关联数组或对象数组用 usort()/uasort() 配合闭包比较逻辑,支持多级、空值安全及稳定排序。

订单是简单一维数组(如订单ID列表)
直接用 sort() 或 rsort():
-
sort($orderIds)→ 升序(数字或字符串都适用) -
rsort($orderIds)→ 降序 - 注意:会重置数字键,适合纯索引数组
订单是关联数组(如 ['id'=>101, 'amount'=>299.99, 'status'=>'paid'])
用 usort() 配合自定义比较函数,这是最常用也最灵活的方式:
- 按金额升序:
usort($orders, fn($a, $b) => $a['amount'] $b['amount']); - 按创建时间降序(假设
created_at是时间戳):usort($orders, fn($a, $b) => $b['created_at'] $a['created_at']); - 按状态分组再按金额排(多级):
usort($orders, fn($a, $b) => [$a['status'], $a['amount']] [$b['status'], $b['amount']]);
订单是对象数组(如 Order 实例)
同样用 usort(),调用对象属性:
usort($orders, fn($a, $b) => $a->total $b->total);- 若需空值安全(如某些订单无 total):
usort($orders, fn($a, $b) => ($a->total ?? 0) ($b->total ?? 0));
需要保持键名关联(如订单ID作键)
用 uasort() 替代 usort:
uasort($orders, fn($a, $b) => $a['amount'] $b['amount']);- 排序后
key($orders)仍是原始订单ID,不会丢失映射关系
usort 等函数默认启用「稳定排序」,相同键值的相对顺序不变,这对订单状态相同但需保留录入先后的场景很关键。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











