Maison >développement back-end >Problème PHP >Comment convertir des chiffres arabes en majuscules en utilisant PHP

Comment convertir des chiffres arabes en majuscules en utilisant PHP

PHPz
PHPzoriginal
2023-04-18 14:09:32820parcourir

Lors de la programmation en PHP, la nécessité de traiter des chaînes est souvent impliquée. Parmi eux, la conversion des chiffres arabes en majuscules est un besoin courant. Cet article explique comment convertir des chiffres arabes en majuscules à l'aide de PHP.

  1. Aperçu

Dans le processus de conversion de chiffres arabes en majuscules, nous devons d'abord diviser le nombre en unités, dizaines, centaines, milliers, etc., puis le convertir en nombres majuscules correspondants. Ce processus convertit essentiellement le nombre en un tableau, puis convertit tour à tour chaque bit du tableau en une lettre majuscule, et enfin assemble les lettres pour former le nombre majuscule final.

  1. Implémentation

La méthode pour implémenter ce processus en PHP est relativement simple, il vous suffit de traiter chaque partie du nombre dans l'ordre. Voici un exemple de code qui peut convertir n'importe quel chiffre arabe en nombre majuscule correspondant :

function arabicToUpperCase($arabic) {
    $units = array('','one','two','three','four','five','six','seven','eight','nine');
    $teens = array('ten','eleven','twelve','thirteen','fourteen','fifteen','sixteen','seventeen','eighteen','nineteen');
    $tens = array('','ten','twenty','thirty','forty','fifty','sixty','seventy','eighty','ninety');
    $hundreds = array('','one hundred','two hundred','three hundred','four hundred','five hundred','six hundred','seven hundred','eight hundred','nine hundred');
    $thousands = array('','one thousand','two thousand','three thousand','four thousand','five thousand','six thousand','seven thousand','eight thousand','nine thousand');

    $parts = explode('.', $arabic);
    $integer = $parts[0];

    if($integer == 0) {
        return 'zero';
    }

    $digits = str_split($integer);
    $digits = array_reverse($digits);

    $result = array();
    for($i = 0; $i < count($digits); $i++) {
        switch($i) {
            case 0:
                $result[] = $units[$digits[$i]];
                break;
            case 1:
                if($digits[$i] == 1) {
                    $result[] = $teens[$digits[$i-1]];
                    $result[] = $tens[$digits[$i]];
                } else {
                    $result[] = $tens[$digits[$i]];
                }
                break;
            case 2:
                $result[] = $hundreds[$digits[$i]];
                break;
            case 3:
                $result[] = $thousands[$digits[$i]];
                break;
        }
    }

    $result = array_reverse($result);
    return join(' ', $result);
}

Le code ci-dessus est une fonction qui convertit les chiffres arabes en nombres majuscules. Cette fonction reçoit un nombre arabe en paramètre, le convertit en nombre majuscule correspondant et renvoie une chaîne.

Au début du code, nous avons défini quatre tableaux : $units, $teens, $tens et $hundreds. Ces quatre tableaux sont utilisés pour convertir les nombres en mots majuscules correspondants. Les indices du tableau représentent la valeur du nombre et les valeurs du tableau représentent les mots correspondants. Par exemple, $unit[1] signifie que le mot correspondant au chiffre 1 est « un ».

Dans la partie principale de la fonction, nous divisons d'abord le nombre en entiers et parties décimales via la fonction d'explosion. Ici, nous traitons uniquement les entiers. Déterminez d’abord si l’entier est 0. S’il est 0, renvoyez simplement « zéro ».

Ensuite, nous divisons l'entier en un tableau au niveau du bit et traitons chaque bit tour à tour à travers une boucle. Dans le processus de traitement du bit actuel, nous utilisons l'instruction switch pour sélectionner différents tableaux de mots en fonction de différents chiffres, puis convertissons le nombre de chiffres en mot correspondant et le stockons dans un tableau de résultats.

Enfin, nous trions le tableau de résultats dans l'ordre inverse, puis utilisons la fonction de jointure pour regrouper tous les mots en une chaîne de nombres majuscules.

  1. Test

Ci-dessous, nous utilisons un exemple pour tester le code ci-dessus :

echo arabicToUpperCase('1234567');

Le résultat de sortie est : "un million deux cent trente-quatre mille cinq cent soixante sept".

  1. Conclusion

Grâce à l'analyse de l'exemple de code ci-dessus, nous pouvons voir que le processus de conversion des nombres en majuscules n'est pas compliqué. Il vous suffit de diviser les nombres en tableaux au niveau du bit, puis de les convertir tour à tour en mots correspondants, et enfin de relier ces mots ensemble. J'espère que cet article pourra aider les lecteurs à mieux maîtriser les capacités de traitement de chaînes du langage PHP.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn