PHP数组默认大小写敏感排序,因strcmp等函数按ASCII值比较;大小写不敏感需用strcasecmp;SORT_STRING标志亦默认敏感;Collator类可依语言规则分级控制。

PHP 数组排序时,默认的字符串比较函数(如 sort、asort、usort 配合 strcmp)会依据 ASCII 值进行逐字符比对,因此天然区分大小写——大写字母 A–Z(ASCII 65–90)排在小写字母 a–z(ASCII 97–122)之前。以下是实现大小写敏感与大小写不敏感排序的关键规则及多种具体方法:
一、使用 strcmp 进行严格大小写敏感排序
strcmp 是二进制安全的字节级比较函数,完全依据字符的 ASCII 值判定顺序,不作任何转换,因此能精确保留并反映大小写差异。
1、定义含大小写混合的索引数组,例如 $arr = ['Apple', 'banana', 'Cherry', 'apple'];
2、调用 usort($arr, 'strcmp');
立即学习“PHP免费学习笔记(深入)”;
3、执行后结果为:['Apple', 'Cherry', 'apple', 'banana'],其中 'Apple'(A=65)排在 'Cherry'(C=67)前,而 'apple'(a=97)因首字母 ASCII 更高排在最后。
二、使用 strcasecmp 实现大小写不敏感排序
strcasecmp 执行忽略大小写的字符串比较,内部将所有字符转为小写后再比对,适用于需按字母顺序而非编码顺序排列的场景。
1、保持相同数组 $arr = ['Apple', 'banana', 'Cherry', 'apple'];
2、调用 usort($arr, 'strcasecmp');
3、执行后结果为:['Apple', 'apple', 'banana', 'Cherry'],此时 'Apple' 与 'apple' 被视为等价,按后续字符或原始位置决定次序(实际由 strcmp 的稳定行为保障相对顺序)。
三、使用 SORT_STRING 标志配合 asort/sort
sort 和 asort 在指定 SORT_STRING 模式时,底层调用 strcmp,因此默认即为大小写敏感排序,无需额外回调函数。
标签: php 编码 app 字节 回调函数 apple 多语言 键值对 代码可读性 排列
还木有评论哦,快来抢沙发吧~