在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解决字符串中重复字符的次数并且排序输出的问题。

相关评论(0)
您是不是忘了说点什么?

友情提示:垃圾评论一律封号...

还没有评论,快来抢沙发吧!