Position actuelle: Accueil> Derniers articles> Comment traiter rapidement la fréquence des caractères avec le coude_chars et array_map?

Comment traiter rapidement la fréquence des caractères avec le coude_chars et array_map?

gitbox 2025-09-17

1. Présentation de la fonction count_chars

Count_chars est une fonction intégrée qui calcule la fréquence de chaque caractère dans une chaîne et renvoie un tableau associatif. Les clés de ce tableau sont le code ASCII du caractère, et la valeur est le nombre de fois que le caractère apparaît dans la chaîne.

Exemple:

 <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 Tableau de paramètres représentant la fréquence de retour</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>

Le résultat de la sortie est:

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

Dans l'exemple ci-dessus, le count_chars renvoie la fréquence de chaque caractère dans la chaîne (par code ASCII). Par exemple, le caractère H (Code ASCII 104) apparaît une fois, et le caractère L (code ASCII 108) apparaît deux fois.

2. Convertir la fréquence des caractères en forme lisible

Habituellement, nous voulons voir la valeur réelle du caractère au lieu du code ASCII. Pour ce faire, nous pouvons traiter le tableau renvoyé en combinaison avec la fonction Array_Map et convertir le code ASCII en caractères.

La fonction Array_Map accepte une fonction de rappel et l'applique à chaque élément du tableau. Dans notre scénario, nous pouvons l'utiliser pour convertir le code ASCII en caractères correspondants.

Exemple:

 <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">// Volonté ASCII Convertir le code en caractères</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() 函数Volonté ASCII Convertir le code en caractère</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">// Volonté频率与字符关联</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>

Le résultat de la sortie est:

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

Pour le moment, nous pouvons voir les caractères et leur fréquence, et la fréquence de chaque caractère dans la sortie est également clairement visible.

3. Utilisation combinée de count_chars et array_map pour calculer la fréquence des caractères

À travers les deux étapes ci-dessus, nous pouvons rapidement calculer la fréquence de caractère et la convertir en un format lisible par l'homme. Ces deux étapes peuvent être encapsulées en une fonction pour simplifier les opérations répétées.

Exemple de fonction:

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

Le résultat de la sortie est:

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

Grâce à la fonction GetCharFrequency , nous pouvons rapidement obtenir les statistiques de fréquence de caractère de n'importe quelle chaîne. Quelle que soit la longueur de la chaîne, le count_chars et array_map fournissent des solutions efficaces.

4. Résumé

En PHP, nous pouvons gérer rapidement et efficacement les fréquences de caractères à l'aide des fonctions count_chars et array_map . Count_chars fournit des statistiques de fréquence brutes, tandis que Array_Map nous aide à convertir les résultats en formats plus intuitifs. En combinant ces deux fonctions, vous pouvez économiser beaucoup de temps et d'efforts dans des scénarios tels que l'analyse des chaînes et le traitement de texte.