如何检查字符串中字符的总出现次数


How to check total occurrence of a character in string

我想找出字符串中特定字符的总出现次数。
我的代码是:

  $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