您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

看看有没有更好的法子

2024/2/23 18:40:42发布13次查看
刚在技术群看到一条n个钟前的问题:
用php如何找出在一个字符串中出现最多的字符
我的思路是先将字符串侵害成数组,通过array_count_values得到元素个数统计,排序,取最顶那个为最多次数,然后可能有多个相同最多次数,for循环找出来..
$teststr = 'rewruo ewjrewm' . php_eol . 'hcywer国bg gfaaf d中国国国s国rew';$teststr = preg_replace('/\s/', '', $teststr);preg_match_all('/./u', $teststr, $strlist);$charcount = array_count_values($strlist[0]);arsort($charcount);$maxcount = current($charcount);foreach($charcount as $char => $count){ if($count < $maxcount){ break; } echo $char . '出现了 ' . $count . ' 次
';}
回复讨论(解决方案) 既然都用 array_count_values ,用 max 求交集就是了,不必循环
你都arsort了,直接echo key($charcount); 就是出现最多的字符了。
既然都用 array_count_values ,用 max 求交集就是了,不必循环
你都arsort了,直接echo key($charcount); 就是出现最多的字符了。
我循环是为了将其他同属最多次数的字符也输出来..按照你们的做法只输出了其中一个而已呢
既然都用 array_count_values ,用 max 求交集就是了,不必循环
你都arsort了,直接echo key($charcount); 就是出现最多的字符了。
我循环是为了将其他同属最多次数的字符也输出来..按照你们的做法只输出了其中一个而已呢
你没试过吧?交集啊,array_intersect,先去试一下看看结果~
你没试过吧?交集啊,array_intersect,先去试一下看看结果~
求代码,我的代码求出结果如下:
r出现了 5 次
w出现了 5 次
国出现了 5 次
e出现了 5 次
因为有4个相同次数并且是最多次数的字符
已经没有都少简化的余地了 $teststr = 'rewruo ewjrewm' . php_eol . 'hcywer国bg gfaaf d中国国国s国rew';$teststr = preg_replace('/\s/', '', $teststr);preg_match_all('/./u', $teststr, $strlist);$strlist = array_count_values($strlist[0]);$r = array_keys($strlist, $m = max($strlist));echo join($t= 出现了 $m 次
, $r).$t;
r 出现了 5 次
e 出现了 5 次
w 出现了 5 次
国 出现了 5 次
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product