我無法弄清楚如何做到這一點:如何計算字符串中的字母字符?
$string = "this is a test sentence";
我想要做的是尋求該刺字母,並展示如何每個字符的很多是有這樣的事情:
'T'在句子中使用了3次。
'i'在句子中使用了2次。
我試過ctype_alpha()
和其他一些東西,但我不能得到相當我正在尋找的答案。
我無法弄清楚如何做到這一點:如何計算字符串中的字母字符?
$string = "this is a test sentence";
我想要做的是尋求該刺字母,並展示如何每個字符的很多是有這樣的事情:
'T'在句子中使用了3次。
'i'在句子中使用了2次。
我試過ctype_alpha()
和其他一些東西,但我不能得到相當我正在尋找的答案。
請使用此代碼。
array_count_values()
是PHP函數,它返回數組中每個 字符的計數。因此,我們需要使用str_split()
將字符串拆分爲數組,然後使用array_count_values()
對其進行計數。
$string = "this is a test sentence";
$k = array_count_values(str_split($string));
print_r($k);
爲什麼要這個OP「使用此代碼」?一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,還是爲了將來訪問SO。 –
如果這是不對的,請張貼正確的答案。它提供了預期的產出。 JFYI –
我沒有說這是錯誤的,我說**好的答案**提供了一個解釋,並提供了關於爲什麼和/或這個代碼如何回答提高答案的長期價值的問題的附加背景。 –
嘗試用下面的代碼,看看它是否適合你:
<?php
$data = "Two Ts and one F.";
foreach (count_chars($data, 1) as $i => $val) {
echo "There were $val instance(s) of \"" , chr($i) , "\" in the string.\n";
}
?>
雖然此代碼可能會回答問題,但提供有關此代碼爲什麼和/或如何回答問題的其他上下文可提高其長期價值。 –
這只是從PHP文檔中直接複製並粘貼的count_chars。 –
下面的代碼將繩子的每一個字母,將其設置爲關鍵在一個數組中並計算每個字母。如果您不想區分大小寫,請先通過strtolower()
或其他類似字符串運行字符串。
<?php
$string = "this is a test sentence";
$counts = [];
for($i = 0; $i < sizeof($string);$i++){
$char = $string[$i];
if(!isset($counts[$char])){
$counts[$char] = 0;
}
$counts[$char]++;
}
var_dump($counts);
排序依據鍵值做到這一點:
ksort($counts);
var_dump($counts);
做或不做,沒有「嘗試」。一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,還是爲了將來訪問SO。 –
@JayBlanchard我寧願讓人們去嘗試,而不是讓他們去做點什麼。可能還有些情況需要更改所提供的代碼。 – Canis
確實如此,但「嘗試這個」答案通常不能提供足夠的上下文。 –
如果你需要專門尋找字母,它可能是最好使用正則表達式,而不僅僅是str_split
,它會給你所有字符,字母或不是。
preg_match_all('/[A-Za-z]/', $string, $letters);
正則表達式單個字符相匹配,所以在$letters[0]
每個完整圖案匹配將是一個字母字符。
一旦你有一個字母數組,你可以使用array_count_values
來計數它們。
$letter_counts = array_count_values($letters[0]);
如果你希望將結果按字母順序排序,ksort($letter_counts)
將做到這一點。
如果做使用str_split
相反,你可以過濾掉從結果非字母字符。
$letters = array_filter(str_split($string), 'ctype_alpha');
'array_count_values(str_split($字符串))' –
或'count_chars' –
歡迎的StackOverflow,問問題,請確保您的問題,滿足[如何提出?](HTTPS之前://計算器。com/help/on-topic)本網站的標準 –