效果如圖
算法:
循環一次字符串(本例的$str),把出現過的字符串記錄在一個數組(如本例的$strRecord)內,如果已經此記錄函數已經有,則不記錄;
在每個字符串時,拿來與記錄數組的值進行比較(本例的$strRecord[]['key']),如果記錄裏的某個值和這個字符串一樣,就記錄次數+1(本例的$strRecord[]['count']);
當然,設置一個變量,默認爲false(如本例的$found),記錄每次比較完,如果記錄數組已經有這個值,就設置爲true,通過這個標記,把沒有遇到過的數組記錄到數組裏
代碼:
<?php
//統計字符串中出現的字符,出現次數
echo '<pre>';
$str = 'aaabbccqqwweedfghhjffffffffggggggggg';//字符串示例
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);//記錄沒有遇到過的字符串
}
}
print_r($strRecord);
?>