Aktueller Standort: Startseite> Neueste Artikel> Wie verarbeitet man die Charakterfrequenz mit count_chars und array_map schnell?

Wie verarbeitet man die Charakterfrequenz mit count_chars und array_map schnell?

gitbox 2025-09-17

1. Überblick über die Funktion count_chars

count_chars ist eine integrierte Funktion, die die Frequenz jedes Zeichens in einer Zeichenfolge berechnet und ein assoziatives Array zurückgibt. Die Schlüssel dieses Arrays sind der ASCII -Code des Zeichens, und der Wert ist die Anzahl, mit der das Zeichen in der Zeichenfolge angezeigt wird.

Beispiel:

 <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 Array von Parametern, die die Rücklauffrequenz darstellen</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>

Das Ausgangsergebnis ist:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [</span><span><span class="hljs-number">104</span></span><span>] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [</span><span><span class="hljs-number">101</span></span><span>] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [</span><span><span class="hljs-number">108</span></span><span>] =&gt; </span><span><span class="hljs-number">2</span></span><span>
    [</span><span><span class="hljs-number">111</span></span><span>] =&gt; </span><span><span class="hljs-number">2</span></span><span>
    [</span><span><span class="hljs-number">119</span></span><span>] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [</span><span><span class="hljs-number">114</span></span><span>] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [</span><span><span class="hljs-number">100</span></span><span>] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [</span><span><span class="hljs-number">33</span></span><span>] =&gt; </span><span><span class="hljs-number">1</span></span><span>
)
</span></span>

Im obigen Beispiel gibt Count_Chars die Frequenz jedes Zeichens in der Zeichenfolge zurück (nach ASCII -Code). Zum Beispiel erscheint der Zeichen H (ASCII -Code 104) einmal und das Zeichen L (ASCII -Code 108) erscheint zweimal.

2. Die Charakterfrequenz in lesbarer Form konvertieren

Normalerweise möchten wir den tatsächlichen Wert des Zeichens anstelle des ASCII -Codes sehen. Dazu können wir das zurückgegebene Array in Kombination mit der Funktion array_map verarbeiten und den ASCII -Code in Zeichen umwandeln.

Die Funktion array_map akzeptiert eine Rückruffunktion und wendet sie auf jedes Element des Arrays an. In unserem Szenario können wir damit den ASCII -Code in die entsprechenden Zeichen umwandeln.

Beispiel:

 <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">// Wille ASCII Code in Zeichen konvertieren</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() 函数Wille ASCII Code in Zeichen konvertieren</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">// Wille频率与字符关联</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>

Das Ausgangsergebnis ist:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [h] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [e] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [l] =&gt; </span><span><span class="hljs-number">2</span></span><span>
    [o] =&gt; </span><span><span class="hljs-number">2</span></span><span>
    [w] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [r] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [d] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [!] =&gt; </span><span><span class="hljs-number">1</span></span><span>
)
</span></span>

Zu diesem Zeitpunkt können wir die Zeichen und ihre Frequenz sehen, und die Frequenz jedes Zeichens in der Ausgabe ist ebenfalls deutlich sichtbar.

3.. Kombinierte Verwendung von count_chars und array_map zur Berechnung der Zeichenfrequenz

In den beiden oben genannten Schritten können wir die Charakterfrequenz schnell berechnen und sie in ein menschlich lesbares Format umwandeln. Diese beiden Schritte können in eine Funktion eingekapselt werden, um wiederholte Operationen zu vereinfachen.

Funktionsbeispiel:

 <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>

Das Ausgangsergebnis ist:

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [h] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [e] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [l] =&gt; </span><span><span class="hljs-number">2</span></span><span>
    [o] =&gt; </span><span><span class="hljs-number">2</span></span><span>
    [w] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [r] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [d] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [!] =&gt; </span><span><span class="hljs-number">1</span></span><span>
)
</span></span>

Durch die GetCharFrequency -Funktion können wir schnell die Zeichenfrequenzstatistiken einer Zeichenfolge erhalten. Unabhängig von der Länge der Zeichenfolge bieten COUNT_CHARS und Array_Map effiziente Lösungen.

4. Zusammenfassung

In PHP können wir Zeichenfrequenzen mit count_chars und Array_Map -Funktionen schnell und effizient verarbeiten. count_chars liefert eine Rohfrequenzstatistik, während Array_Map uns hilft, Ergebnisse in intuitivere Formate umzuwandeln. Durch die Kombination dieser beiden Funktionen können Sie in Szenarien wie String -Analyse und Textverarbeitung viel Zeit und Mühe sparen.