Home > Article > Backend Development > PHP string learning counts the number of occurrences of characters
In the previous article, we introduced a case-insensitive method of replacing a given substring with other values. If you are interested, you can click on the link to check → "PHP cleverly uses functions to replace a given substring with * Number (case insensitive) 》. This time we will introduce how to use PHP to count the number of occurrences of characters in a string. You can refer to it if necessary.
I believe that given a string "aaabbccqqwweeab", how to count the number of occurrences of each character? You can use the loop
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 //统计字符串中出现的字符,出现次数 $str = 'aaabbccqqwweeab';//字符串示例 echo "字符串为:".$str.'<br/>'; $strRecord=array();//把出现过的字符记录在此数组中,如果记录有,则不记录, for($i=0;$i<strlen($str);$i++){ $found = 0;//默认设置为没有遇到过 foreach((array)$strRecord as $k=>$v){ if($str[$i] == $v['key']){ $strRecord[$k]['count'] += 1;//已经遇到,count + 1; $found = 1;//设置已经遇到过的,标记 continue;//如果已经遇到,不用再循环记录数组了,继续下一个字符串比较 } } if(!$found){ $strRecord[] = array('key'=>$str[$i],'count'=>1);//记录没有遇到过的字符串 } } echo '<pre class="brush:php;toolbar:false">'; print_r($strRecord); ?>
to analyze:
Loop the $str string once and record the characters that have appeared in the $strRecord array (only record once, if repeated, Just ignore it).
Traverse the $strRecord array and compare each character in the string ($str[$i]
) with the value of the array ($strRecord[ ]['key']
) for comparison; if a value in the record is the same as this character, record the number of times ($strRecord[]['count']
) 1.
Let’s take a look at the output:
OK, the statistics are out!
But sometimes we don’t need to count all characters, we only need to count the number of occurrences of a specified character/substring. How to do this?
This is also simple, PHP provides a built-in function to solve this problem. Let's take a look at the following example:
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $str = 'aaabbccqqwweeab'; echo "字符串为:".$str.'<br/><br/>'; echo "字符串中出现了 ".substr_count($str,'a')." 次 a字符!"; echo "<br/><br/>字符串中出现了 ".substr_count($str,'ab')." 次 ab子串!"; ?>
Analysis: We use "substr_count($str,'a')
" and "substr_count($str,'ab')
" statement to count the number of occurrences of the "a" character and the "ab" character in the string $str. What do you think this will output? Should "4" and "2" be output? So right? Let's take a look at the output:
Correct! The number of occurrences of the "a" character and the "ab" character is "4" and "2".
Let’s take a look at the key function substr_count().
The substr_count() function can count the number of times a substring (consisting of one or more characters) appears in a string (case-sensitive).
substr_count($string,$substring,$start,$length)
The function accepts 2 required parameters $string and $substring, and 2 omitted parameters $start and $length.
We already know the first two required parameters through the above code example. Let's take a look at the two omitted parameters $start and $length.
$start: used to specify where to start searching for substrings in the string
$length: used to specify the length of the search
The value returned by the substr_count() function is also different depending on the values set by the parameters $start and $length.
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $str = 'aaabbccqqwweeab'; echo "字符串为:".$str.'<br/><br/>'; echo "字符串中出现了 ".substr_count($str,'a',0,5)." 次 a字符!"; echo "<br/>字符串中出现了 ".substr_count($str,'a',2,5)." 次 a字符!"; echo "<br/><br/>字符串中出现了 ".substr_count($str,'ab',0,10)." 次 ab子串!"; echo "<br/>字符串中出现了 ".substr_count($str,'ab',3)." 次 ab子串!"; ?>
Output result:
Okay, that’s all. If you want to know anything else, you can click this. → →php video tutorial
Finally, I recommend reading a classic course "PHP String Processing (Jade Girl Heart Sutra Edition)", it's free~ come and learn !
The above is the detailed content of PHP string learning counts the number of occurrences of characters. For more information, please follow other related articles on the PHP Chinese website!