0

0

php数组排序怎么区分大小写_php数组排序区分大小写规则与实现技巧

星夢妙者

星夢妙者

发布时间:2025-12-18 20:21:22

|

813人浏览过

|

来源于php中文网

原创

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

php数组排序怎么区分大小写_php数组排序区分大小写规则与实现技巧

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,因此默认即为大小写敏感排序,无需额外回调函数

Veggie AI
Veggie AI

Veggie AI 是一款利用AI技术生成可控视频的在线工具

下载

1、对关联数组 $data = ['a' => 'Zebra', 'b' => 'apple', 'c' => 'Banana']; 使用 asort($data, SORT_STRING);

2、排序后键值对顺序变为:['c' => 'Banana', 'b' => 'apple', 'a' => 'Zebra'],因为 'B'(66)

3、注意:SORT_STRING 是默认行为,显式指定可增强代码可读性,但不改变大小写敏感本质

四、自定义比较函数强制统一大小写再比较

通过 strtolower 或 strtoupper 显式转换后再比较,可完全控制大小写处理逻辑,并支持嵌套字段或复杂条件。

1、定义比较函数 function caseInsensitiveCompare($a, $b) { return strcmp(strtolower($a), strtolower($b)); }

2、对数组 $items = ['Hello', 'world', 'PHP', 'code']; 调用 usort($items, 'caseInsensitiveCompare');

3、结果为:['code', 'Hello', 'PHP', 'world'],所有字符串首字母被视作小写参与排序,但原始大小写形式在结果中保持不变。

五、使用 IntlCollator 实现符合区域设置的大小写感知排序

IntlCollator 提供 Unicode 感知的多语言排序能力,可配置是否区分大小写(通过 collation strength),适用于国际化应用。

1、实例化排序器 $collator = new IntlCollator('en_US', ['strength' => Collator::PRIMARY]);

2、PRIMARY 强度忽略大小写和重音差异;若需区分大小写,应设为 Collator::SECONDARY 或更高

3、调用 $collator->asort($array),此时 'Apple' 与 'apple' 将按大小写分层排序,且遵循英语语序规则而非纯 ASCII 序。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2702

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1665

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1527

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

974

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1443

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1235

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1529

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1306

2023.11.13

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

19

2026.01.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.9万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 8.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号