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