在php开发中有这样的需求。在指定的字符串中提取出每个单位字符出现的次数,并且倒序排序,截取前4个。留作使用。刚拿到这个需求的时候,我想了想,难道要把每个字符全部切割出来之后,一一的比对计算出相应的出现次数吗?我的直觉告诉,这样不好。其实php中用相应的函数array_count_values()
可以直接的计算出每个数组值出现的次数。倒序可以使用arsort()
,切割数组也有函数array_slice()
。所以说,方法我们已经知道了,那么看我们怎么带到实际的运用吧。
字符串:
简约,简约,金属,皮革,后现代,直角,现代,豪华,布艺,金属,直角,现代,
需求:
在指定的字符串中判断出单位字符出现的次数,并且取出出现次数最多的几个。
php代码:
<?php $str = '简约,简约,金属,皮革,后现代,直角,现代,豪华,布艺,金属,直角,现代,'; $tag_str = rtrim($str,','); $tag_arr = explode(',',$tag_str); // 统计出现的次数 $tag_arr = array_count_values($tag_arr); echo '<pre>'; print_r($tag_arr); // 排序 echo '</pre><br>'; arsort($tag_arr); echo '<pre>'; print_r($tag_arr); // 去除前4个值 echo '</pre><br>'; $tag_arr = array_slice($tag_arr,0,4,true); echo '<pre>'; print_r($tag_arr); // 组成字符串 echo '</pre><br>'; $str = ''; foreach($tag_arr as $k=>$v){ $str .= $k.','; } echo $str; ?>
输出代码:
Array ( [简约] => 2 [金属] => 2 [皮革] => 1 [后现代] => 1 [直角] => 2 [现代] => 2 [豪华] => 1 [布艺] => 1 ) Array ( [简约] => 2 [现代] => 2 [金属] => 2 [直角] => 2 [布艺] => 1 [豪华] => 1 [后现代] => 1 [皮革] => 1 ) Array ( [简约] => 2 [现代] => 2 [金属] => 2 [直角] => 2 ) 简约,现代,金属,直角,
通过输出php代码,我们很清晰的看到如何用php解决字符串中重复字符的次数并且排序输出的问题。
友情提示:垃圾评论一律封号...