1 <?php 2 //統計字符串中出現的字符,出現次數 3 echo '<pre>'; 4 $str = 'aaabbccqqwweedfghhjffffffffggggggggg';//字符串示例 5 echo $str.'<br/>'; 6 $strRecord=array();//把出現過的字符記錄在此數組中,如果記錄有,則不記錄, 7 8 for($i=0;$i<strlen($str);$i++){ 9 $found = 0;//默認設置為沒有遇到過 10 11 foreach((array)$strRecord as $k=>$v){ 12 if($str[$i] == $v['key']){ 13 $strRecord[$k]['count'] += 1;//已經遇到,count + 1; 14 $found = 1;//設置已經遇到過的,標記 15 continue;//如果已經遇到,不用再循環記錄數組了,繼續下一個字符串比較 16 } 17 } 18 19 if(!$found){ 20 $strRecord[] = array('key'=>$str[$i],'count'=>1);//記錄沒有遇到過的字符串 21 } 22 } 23 print_r($strRecord);
效果如圖
算法:
循環一次字符串(本例的$str),把出現過的字符串記錄在一個數組(如本例的$strRecord)內,如果已經此記錄函數已經有,則不記錄;
在每個字符串時,拿來與記錄數組的值進行比較(本例的$strRecord[]['key']),如果記錄里的某個值和這個字符串一樣,就記錄次數+1(本例的$strRecord[]['count']);
當然,設置一個變量,默認為false(如本例的$found),記錄每次比較完,如果記錄數組已經有這個值,就設置為true,通過這個標記,把沒有遇到過的數組記錄到數組里
代碼: