count_charsは、文字列内の各文字の周波数を計算し、連想配列を返す組み込み関数です。この配列のキーは文字のASCIIコードであり、値は文字列に文字が表示される回数です。
<span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"hello world!"</span></span><span>;
</span><span><span class="hljs-variable">$char_count</span></span><span> = </span><span><span class="hljs-title function_ invoke__">count_chars</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>); </span><span><span class="hljs-comment">// 1 返品周波数を表すパラメーターの配列</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$char_count</span></span><span>);
</span></span>出力の結果は次のとおりです。
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">104</span></span><span>] => </span><span><span class="hljs-number">1</span></span><span>
[</span><span><span class="hljs-number">101</span></span><span>] => </span><span><span class="hljs-number">1</span></span><span>
[</span><span><span class="hljs-number">108</span></span><span>] => </span><span><span class="hljs-number">2</span></span><span>
[</span><span><span class="hljs-number">111</span></span><span>] => </span><span><span class="hljs-number">2</span></span><span>
[</span><span><span class="hljs-number">119</span></span><span>] => </span><span><span class="hljs-number">1</span></span><span>
[</span><span><span class="hljs-number">114</span></span><span>] => </span><span><span class="hljs-number">1</span></span><span>
[</span><span><span class="hljs-number">100</span></span><span>] => </span><span><span class="hljs-number">1</span></span><span>
[</span><span><span class="hljs-number">33</span></span><span>] => </span><span><span class="hljs-number">1</span></span><span>
)
</span></span>上記の例では、 count_charsは文字列内の各文字の頻度を返します(ASCIIコードによる)。たとえば、文字H (ASCIIコード104)が1回表示され、文字L (ASCIIコード108)が2回表示されます。
通常、ASCIIコードの代わりに文字の実際の値を確認したいと考えています。これを行うには、返された配列をArray_map関数と組み合わせて処理し、ASCIIコードを文字に変換できます。
array_map関数はコールバック関数を受け入れ、配列の各要素に適用します。シナリオでは、ASCIIコードを対応する文字に変換するために使用できます。
<span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"hello world!"</span></span><span>;
</span><span><span class="hljs-variable">$char_count</span></span><span> = </span><span><span class="hljs-title function_ invoke__">count_chars</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>);
</span><span><span class="hljs-comment">// 意思 ASCII コードを文字に変換します</span></span><span>
</span><span><span class="hljs-variable">$char_count</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$key</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-variable">$key</span></span><span>); </span><span><span class="hljs-comment">// chr() 函数意思 ASCII コードを文字に変換します</span></span><span>
}, </span><span><span class="hljs-title function_ invoke__">array_keys</span></span><span>(</span><span><span class="hljs-variable">$char_count</span></span><span>));
</span><span><span class="hljs-comment">// 意思频率与字符关联</span></span><span>
</span><span><span class="hljs-variable">$char_count</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_combine</span></span><span>(</span><span><span class="hljs-variable">$char_count</span></span><span>, </span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-variable">$char_count</span></span><span>));
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$char_count</span></span><span>);
</span></span>出力の結果は次のとおりです。
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[h] => </span><span><span class="hljs-number">1</span></span><span>
[e] => </span><span><span class="hljs-number">1</span></span><span>
[l] => </span><span><span class="hljs-number">2</span></span><span>
[o] => </span><span><span class="hljs-number">2</span></span><span>
[w] => </span><span><span class="hljs-number">1</span></span><span>
[r] => </span><span><span class="hljs-number">1</span></span><span>
[d] => </span><span><span class="hljs-number">1</span></span><span>
[!] => </span><span><span class="hljs-number">1</span></span><span>
)
</span></span>この時点で、文字とその頻度を見ることができ、出力内の各文字の頻度もはっきりと見えます。
上記の2つのステップを使用して、文字頻度をすばやく計算し、人間の読み取り可能な形式に変換できます。これらの2つのステップを関数にカプセル化して、繰り返し操作を簡素化できます。
<span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">getCharFrequency</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$string</span></span></span><span>) {
</span><span><span class="hljs-variable">$char_count</span></span><span> = </span><span><span class="hljs-title function_ invoke__">count_chars</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>);
</span><span><span class="hljs-variable">$char_count</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$key</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-variable">$key</span></span><span>);
}, </span><span><span class="hljs-title function_ invoke__">array_keys</span></span><span>(</span><span><span class="hljs-variable">$char_count</span></span><span>));
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">array_combine</span></span><span>(</span><span><span class="hljs-variable">$char_count</span></span><span>, </span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-variable">$char_count</span></span><span>));
}
</span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"hello world!"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">getCharFrequency</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span></span>出力の結果は次のとおりです。
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[h] => </span><span><span class="hljs-number">1</span></span><span>
[e] => </span><span><span class="hljs-number">1</span></span><span>
[l] => </span><span><span class="hljs-number">2</span></span><span>
[o] => </span><span><span class="hljs-number">2</span></span><span>
[w] => </span><span><span class="hljs-number">1</span></span><span>
[r] => </span><span><span class="hljs-number">1</span></span><span>
[d] => </span><span><span class="hljs-number">1</span></span><span>
[!] => </span><span><span class="hljs-number">1</span></span><span>
)
</span></span>GetCharFrequency関数を使用すると、文字列の文字周波数統計をすばやく取得できます。文字列の長さに関係なく、 count_charsとarray_mapは効率的なソリューションを提供します。
PHPでは、 count_charsとarray_map関数を使用して、文字頻度を迅速かつ効率的に処理できます。 count_charsは生の周波数統計を提供しますが、 array_mapは結果をより直感的な形式に変換するのに役立ちます。これら2つの機能を組み合わせることにより、文字列分析やテキスト処理などのシナリオで多くの時間と労力を節約できます。
関連タグ:
array_map