找到第一个唯一字符需先统计频次再遍历:用 str_split() 和 array_count_values() 统计,再遍历原字符串查频次为1者;或用 strpos()===strrpos() 判断唯一性;注意空串、大小写及多字节处理。

要找到 PHP 字符串中第一个唯一(只出现一次)的字符,核心思路是:先统计每个字符的出现次数,再从左到右遍历原字符串,返回第一个计数为 1 的字符。
使用 array_count_values() 统计频次
这是最简洁的方式。把字符串转为字符数组,用 array_count_values() 快速统计每个字符的出现次数,再循环原字符串比对:
- 用 str_split($s) 拆分字符串为字符数组
- 用 array_count_values() 得到字符 → 出现次数的关联数组
- 用 foreach ($s as $char) 或 for 遍历原字符串,查表返回首个频次为 1 的字符
手动遍历计数(兼容性更好)
若需避免函数依赖或处理多字节字符(如中文),可用 substr() 或 mb_substr() 配合循环计数:
Angel工作室企业网站管理系统全DIV+CSS模板,中英文显示,防注入sql关键字过滤,多浏览器适应,完美兼容IE6-IE8,火狐,谷歌等符合标准的浏览器,模板样式集中在一个CSS样式中,内容与样式完全分离,方便网站设计人员开发模板与管理。系统较为安全,以设计防注入,敏感字符屏蔽。新闻,产品,单页独立关键字设计,提高搜索引擎收录。内置IIS测试,双击打启动预览网站 Angel工作室企业网站
- 外层循环按索引取字符,内层循环统计该字符在整个字符串中出现次数
- 一旦发现某字符只出现 1 次,立即返回,无需继续
- 注意:纯 ASCII 场景下用 strlen() 和 substr() 即可;含中文等需用 mb_* 函数
使用 strpos() + strrpos() 判断唯一性
不显式计数,而是利用位置判断:若某个字符第一次和最后一次出现的位置相同,说明它只出现一次:
立即学习“PHP免费学习笔记(深入)”;
- 遍历字符串每个位置 $i,取 $char = $s[$i]
- 检查 strpos($s, $char) === strrpos($s, $char)
- 成立则返回该字符;遍历完无结果返回空或 false
- 优点是逻辑直观、内存占用小;缺点是每次调用 strpos/strrpos 都会扫描字符串,时间复杂度略高
返回值与边界处理
实际使用时需明确未找到时的返回约定:
- 常见做法:返回字符本身(如 'a'),未找到返回 null、false 或空字符串 ''
- 空字符串或单字符字符串要单独判断,避免越界或误判
- 区分大小写:PHP 默认区分,如 'A' 和 'a' 是不同字符;如需忽略,提前用 strtolower()










