您好,登錄后才能下訂單哦!
這篇文章主要講解了“PHP怎么統(tǒng)計(jì)字符的出現(xiàn)次數(shù)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“PHP怎么統(tǒng)計(jì)字符的出現(xiàn)次數(shù)”吧!
給出一個(gè)字符串“aaabbccqqwweeab”,如何統(tǒng)計(jì)出每個(gè)字符的出現(xiàn)次數(shù)?可以借助循環(huán)
<?php header("Content-Type: text/html;charset=utf-8"); //設(shè)置字符編碼 //統(tǒng)計(jì)字符串中出現(xiàn)的字符,出現(xiàn)次數(shù) $str = 'aaabbccqqwweeab';//字符串示例 echo "字符串為:".$str.'<br/>'; $strRecord=array();//把出現(xiàn)過(guò)的字符記錄在此數(shù)組中,如果記錄有,則不記錄, for($i=0;$i<strlen($str);$i++){ $found = 0;//默認(rèn)設(shè)置為沒(méi)有遇到過(guò) foreach((array)$strRecord as $k=>$v){ if($str[$i] == $v['key']){ $strRecord[$k]['count'] += 1;//已經(jīng)遇到,count + 1; $found = 1;//設(shè)置已經(jīng)遇到過(guò)的,標(biāo)記 continue;//如果已經(jīng)遇到,不用再循環(huán)記錄數(shù)組了,繼續(xù)下一個(gè)字符串比較 } } if(!$found){ $strRecord[] = array('key'=>$str[$i],'count'=>1);//記錄沒(méi)有遇到過(guò)的字符串 } } echo '<pre>'; print_r($strRecord); ?>
分析:
循環(huán)一次$str字符串,將出現(xiàn)過(guò)的字符記錄在$strRecord數(shù)組(只記錄一次,如果重復(fù)了,就忽略)。
遍歷$strRecord數(shù)組,將字符串中的每個(gè)字符($str[$i]
)和數(shù)組的值($strRecord[]['key']
)進(jìn)行比較;如果記錄里的某個(gè)值和這個(gè)字符一樣,就記錄次數(shù)($strRecord[]['count']
)+1。
我們來(lái)看看輸出結(jié)果:
OK,統(tǒng)計(jì)出來(lái)了!
但有時(shí)我們不需要統(tǒng)計(jì)全部字符,只需要計(jì)算指定的一個(gè)字符/子串的出現(xiàn)次數(shù),這樣怎么操作?
這也簡(jiǎn)單,PHP提供了一個(gè)內(nèi)置函數(shù)可以解決這個(gè)問(wèn)題。我們來(lái)看看下面一個(gè)例子:
<?php header("Content-Type: text/html;charset=utf-8"); //設(shè)置字符編碼 $str = 'aaabbccqqwweeab'; echo "字符串為:".$str.'<br/><br/>'; echo "字符串中出現(xiàn)了 ".substr_count($str,'a')." 次 a字符!"; echo "<br/><br/>字符串中出現(xiàn)了 ".substr_count($str,'ab')." 次 ab子串!"; ?>
分析:我們使用“substr_count($str,'a')
”和“substr_count($str,'ab')
”語(yǔ)句來(lái)統(tǒng)計(jì)字符串$str中“a”字符和“ab”字符的出現(xiàn)次數(shù)。大家覺(jué)得這個(gè)會(huì)輸出什么?是不是應(yīng)該輸出“4”和“2”呀。那么對(duì)不對(duì)?我們來(lái)看一下輸出結(jié)果:
正確!“a”字符和“ab”字符的出現(xiàn)次數(shù)就是“4”和“2”。
下面我們來(lái)了解一下這其中的關(guān)鍵函數(shù)substr_count()。
substr_count()函數(shù)可以計(jì)算子串(由一個(gè)或多個(gè)字符組成)在字符串中出現(xiàn)的次數(shù)(區(qū)分大小寫)。
substr_count($string,$substring,$start,$length)
函數(shù)接受2個(gè)必需參數(shù)$string和$substring、2個(gè)可省略參數(shù)$start和$length。
前2個(gè)必需參數(shù)我們通過(guò)上面的代碼示例已經(jīng)對(duì)大家有所了解,下面我們來(lái)看看2個(gè)可省略參數(shù)$start和$length。
$start:用于指定在字符串中何處開(kāi)始搜索子串
$length:用于指定搜索的長(zhǎng)度
根據(jù)參數(shù)$start和$length設(shè)置的值不同,substr_count()函數(shù)返回的值也不同。
<?php header("Content-Type: text/html;charset=utf-8"); //設(shè)置字符編碼 $str = 'aaabbccqqwweeab'; echo "字符串為:".$str.'<br/><br/>'; echo "字符串中出現(xiàn)了 ".substr_count($str,'a',0,5)." 次 a字符!"; echo "<br/>字符串中出現(xiàn)了 ".substr_count($str,'a',2,5)." 次 a字符!"; echo "<br/><br/>字符串中出現(xiàn)了 ".substr_count($str,'ab',0,10)." 次 ab子串!"; echo "<br/>字符串中出現(xiàn)了 ".substr_count($str,'ab',3)." 次 ab子串!"; ?>
輸出結(jié)果:
感謝各位的閱讀,以上就是“PHP怎么統(tǒng)計(jì)字符的出現(xiàn)次數(shù)”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)PHP怎么統(tǒng)計(jì)字符的出現(xiàn)次數(shù)這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。