本文實例講述了PHP實現(xiàn)統(tǒng)計所有字符在字符串中出現(xiàn)次數(shù)的方法。分享給大家供大家參考,具體如下:
先來看看效果:
算法:
循環(huán)一次字符串(本例的$str
),把出現(xiàn)過的字符串記錄在一個數(shù)組(如本例的$strRecord
)內(nèi),如果已經(jīng)此記錄函數(shù)已經(jīng)有,則不記錄;
在每個字符串時,拿來與記錄數(shù)組的值進行比較(本例的$strRecord[]['key']
),如果記錄里的某個值和這個字符串一樣,就記錄次數(shù)+1(本例的$strRecord[]['count']
);
當(dāng)然,設(shè)置一個變量,默認為false(如本例的$found
),記錄每次比較完,如果記錄數(shù)組已經(jīng)有這個值,就設(shè)置為true,通過這個標(biāo)記,把沒有遇到過的數(shù)組記錄到數(shù)組里
實現(xiàn)代碼:
?php
//統(tǒng)計字符串中出現(xiàn)的字符,出現(xiàn)次數(shù)
echo 'pre>';
$str = 'aaabbccqqwweedfghhjffffffffggggggggg';//字符串示例
echo $str.'br/>';
$strRecord=array();//把出現(xiàn)過的字符記錄在此數(shù)組中,如果記錄有,則不記錄,
for($i=0;$istrlen($str);$i++){
$found = 0;//默認設(shè)置為沒有遇到過
foreach((array)$strRecord as $k=>$v){
if($str[$i] == $v['key']){
$strRecord[$k]['count'] += 1;//已經(jīng)遇到,count + 1;
$found = 1;//設(shè)置已經(jīng)遇到過的,標(biāo)記
continue;//如果已經(jīng)遇到,不用再循環(huán)記錄數(shù)組了,繼續(xù)下一個字符串比較
}
}
if(!$found){
$strRecord[] = array('key'=>$str[$i],'count'=>1);//記錄沒有遇到過的字符串
}
}
print_r($strRecord);
?>
PS:這里再為大家推薦2款非常方便的統(tǒng)計工具供大家參考使用:
在線字數(shù)統(tǒng)計工具:
http://tools.jb51.net/code/zishutongji
在線字符統(tǒng)計與編輯工具:
http://tools.jb51.net/code/char_tongji
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》及《php程序設(shè)計算法總結(jié)》
希望本文所述對大家PHP程序設(shè)計有所幫助。
您可能感興趣的文章:- php查找字符串出現(xiàn)次數(shù)的方法
- php計算數(shù)組相同值出現(xiàn)次數(shù)的代碼(array_count_values)
- PHP獲取數(shù)組長度或某個值出現(xiàn)次數(shù)的方法
- php獲取字符串中各個字符出現(xiàn)次數(shù)的方法
- PHP中substr_count()函數(shù)獲取子字符串出現(xiàn)次數(shù)的方法
- PHP實現(xiàn)找出數(shù)組中出現(xiàn)次數(shù)超過數(shù)組長度一半的數(shù)字算法示例
- PHP統(tǒng)計二維數(shù)組元素個數(shù)的方法
- php統(tǒng)計數(shù)組元素個數(shù)的方法
- PHP統(tǒng)計數(shù)值數(shù)組中出現(xiàn)頻率最多的10個數(shù)字的方法
- PHP實現(xiàn)統(tǒng)計一個數(shù)字在排序數(shù)組中出現(xiàn)次數(shù)的方法