我想找出字符串中特定字符的总出现次数。
我的代码是:
$str = 'aabbbcccccaa';
for ($i=0;$i<strlen($str);$i++){
$len = 0;
for ($j=$i;$j<=strlen($str);$j++){
if($str[$i] == $str[$j]){
$len++;
}
}
echo "'n".$str[$i].' len is '.$len;
}
我的输出是这样的:
a len is 4
a len is 3
b len is 3
b len is 2
b len is 1
c len is 5
c len is 4
c len is 3
c len is 2
c len is 1
a len is 2
a len is 1
但我想要这样的东西:
a len is 4
b len is 3
c len is 5 only
我怎样才能做到这一点?
RTM
<?php
$data = "Two Ts and one F.";
foreach (count_chars($data, 1) as $i => $val) {
echo "There were $val instance(s) of '"" , chr($i) , "'" in the string.'n";
}
?>
你应该使用 substr_count()
.它就在手册中:
http://php.net/manual/en/function.substr-count.php
或者count_chars()
对于通用解决方案来说会更好:
http://php.net/manual/en/function.count-chars.php
在自己创建一些东西之前,请务必检查手册......那里可能有一个功能可以完全按照您的要求进行操作。
$str = 'aabbbcccccaa';
foreach (count_chars($str, 1) as $i => $val) {
echo chr($i), " len is $val " , "<br>";
}
你好,简单地实现波纹管方式!
我们的自定义功能:
function count_chars_unicode($str, $x = false) {
$tmp = preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY);
foreach ($tmp as $c) {
$chr[$c] = isset($chr[$c]) ? $chr[$c] + 1 : 1;
}
return is_bool($x)
? ($x ? $chr : count($chr))
: $chr[$x];
}
用法:
print_r(count_chars_unicode('aabbbcccccaa', true));
O/P
数组 ( [a] => 4 [b] => 3 [c] => 5 )
print_r(count_chars_unicode('aabbbcccccaa', 'a')); // frequency of "a"
操作 : 4
print_r(count_chars_unicode('aabbbcccccaa')); // count of uniq chars
操作日期 : 3