Copy codeThe Code is as follows: <? Php
// This method is purely a back-function and is not explained;
Function countStr ($ str ){
$ Str_array = str_split ($ str );
$ Str_array = array_count_values ($ str_array );
Arsort ($ str_array );
Return $ str_array;
}
// The following is an example;
$ Str = "asdfgfdas323344 ##\ \ $ fdsdfg * $ ** $ 443563536254fas ";
Print_r (countStr ($ str ));
?>
<?
// This method has some data structure ideas, but it is quite understandable :)
Function countStr2 ($ str ){
$ Str_array = str_split ($ str );
$ Result_array = array ();
Foreach ($ str_array as $ value) {// determines whether the character is a new type. If yes, It is set to 1. If not, it is automatically added;
If (! $ Result_array [$ value]) {
$ Result_array [$ value] = 1;
} Else {
$ Result_array [$ value] ++;
}
}
Arsort ($ result_array );
Return $ result_array;
}
$ Str = "asdfgfdas323344 ##\ \ $ fdsdfg * $ ** $ 443563536254fas ";
Var_dump (countStr2 ($ str ))
?>
<? Php
// This method is purely a poor version of solution 1. First, find the total classes of all characters, and then use the substr_count function one by one.
Function countStr3 ($ str ){
$ Str_array = str_split ($ str );
$ Unique = array_unique ($ str_array );
Foreach ($ unique as $ v ){
$ Result_array [$ v] = substr_count ($ str, $ v );
}
Arsort ($ result_array );
Return $ result_array;
}
$ Str = "asdfgfdas323344 ##\ \ $ fdsdfg * $ ** $ 443563536254fas ";
Var_dump (countStr3 ($ str ));
?>
* The str_split function is used in any method. Therefore, this function is very important ~