php内置数组排序函数按是否保留键名、按键或值排序、大小写敏感性及自定义规则区分:sort/rsort按值重排索引键,asort/arsort按值保留关联键,ksort/krsort按键排序,array_multisort/usort支持多维与自定义逻辑。

PHP 提供了十多个内置数组排序函数,不同函数适用于不同数据结构和排序需求。关键区别在于:是否保留键名、按值还是按键排序、是否区分大小写、是否支持自定义规则。选错函数可能导致键名丢失、顺序错误或性能下降。
按值排序(不保留原始键名)
适合索引数组的简单升序/降序需求,排序后键名会被重置为 0,1,2…
- sort():升序,区分大小写,仅适用于数值或字符串值
- rsort():降序,行为同 sort(),但倒序排列
- asort():升序,保留原始键名,适合关联数组按值排(如 ['a'=>3, 'b'=>1] → ['b'=>1, 'a'=>3]
- arsort():降序,同样保留键名
按键排序(保留键名)
当需要按数组“名字”而非“内容”排序时使用,比如配置项按配置名归类、用户按用户名字母序排列。
一个功能强大的B2B与B2C的购物平台,除了原本OSC功能外,增加更新的功能: 一、 取消了register_globals必须开启的限制 二、 將HTML程式碼与PHP程式碼完全分离,採用了smarty 樣板引擎 三、 每支档案includes所需函数与资料库连结,使的网页显示速度明显提升 四、 检视、购买商品群组权限设定 五、 十八岁以下禁购机制 六、 折价券购物抵扣机制 七、 礼券购物机制
- ksort():按键升序(字符串键按字典序,数字键转为字符串比较)
- krsort():按键降序
- 注意:k 开头的函数只影响键的顺序,值随键一起移动
自然排序与大小写无关排序
标准 sort() 对 "item2" 和 "item10" 会排成 item10
立即学习“PHP免费学习笔记(深入)”;
- natsort():自然升序,保留键名,适合文件名、版本号等含数字的字符串
- natcasesort():自然排序且忽略大小写
- usort() 和 uasort():配合自定义比较函数,可实现任意逻辑(如按对象属性、多字段、中文拼音首字母等)
多维数组与高级排序
普通排序函数无法直接处理二维数组(如用户列表 [['name'=>'张三','age'=>25], ['name'=>'李四','age'=>22]])。需借助:
- array_multisort():用一列或多列作为排序依据,支持多种排序方向和类型(SORT_STRING / SORT_NUMERIC / SORT_NATURAL)
- usort() + 匿名函数:更灵活,例如按年龄升序、同龄者按姓名降序
- 示例:
usort($users, fn($a,$b) => $a['age'] $b['age'] ?: strcmp($b['name'], $a['name']));










