Conversion d'un montant en format alphabétique

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 577 fois - Téléchargée 11 fois

Contenu du snippet

<?php
    // retourne sous format alphabétique un chiffre de 1 à 100 (la correspondance du chiffre 1 n'est pas affichée)
    function unite($u){
  $str="";
  if ($u==1)$str="";if ($u==2)$str="deux";if ($u==3)$str="trois";if ($u==4)$str="quatre";if ($u==5)$str="cinq";
  if ($u==6)$str="six";if ($u==7)$str="sept";if ($u==8)$str="huit";if ($u==9)$str="neuf";if ($u==10)$str="dix";if ($u==11)$str="onze";
  if ($u==12)$str="douze";if ($u==13)$str="treize";if ($u==14)$str="quatorze";if ($u==15)$str="quinze";if ($u==16)$str="seize";if ($u==17)$str="dix-sept";
  if ($u==18)$str="dix-huit";if ($u==19)$str="dix-neuf";
  if ($u>=20 && $u<30){$str="vingt";if ($u-20==1) $str="vingt-et-un";elseif($u!=20) $str="vingt-".unite($u-20);}
  if ($u>=30 && $u<40){$str="trente";if ($u-30==1) $str="trente-et-un";elseif($u!=30) $str="trente-".unite($u-30);}
  if ($u>=40 && $u<50){$str="quarante";if ($u-40==1) $str="quarante-et-un";elseif($u!=40) $str="quarante-".unite($u-40);}
  if ($u>=50 && $u<60){$str="cinquante";if ($u-50==1) $str="cinquante-et-un";elseif($u!=50) $str="cinquante-".unite($u-50);}
  if ($u>=60 && $u<70){$str="soixante";if ($u-60==1) $str="soixante-et-un";elseif($u!=60) $str="soixante-".unite($u-60);}
  if ($u>=70 && $u<80){$str="soixante-dix";if ($u-70==1) $str="soixante-onze";elseif($u!=70) $str="soixante-".unite($u-70+10);}
  if ($u>=80 && $u<90){$str="quatre-vingt";if ($u-80==1) $str="quatre-vingt-et-un";elseif($u!=80) $str="quatre-vingt-".unite($u-80);}
  if ($u>=90 && $u<100){$str="quatre-vingt-dix";if ($u-90==1) $str="quatre-vingt-onze";elseif($u!=90) $str="quatre-vingt-".unite($u-90+10);}
  if ($u==100)$str="cent";
  return $str;
 }
    // retourne sous format alphabétique un chiffre de 0 à 999 999 999
    function montant_en_chiffre($val){
   $million = 0;
   $millier = 0;
   $centaine = 0;
   $dizaine = 0;
   $str = "";
   if ($val==1) $str = "un";
   if ($val==0) $str = "zéro";
   if ($val>=1000000){
    $nb_million = (int)($val/1000000);
    if ($nb_million!=0) $str .= montant_en_chiffre($nb_million)." million";
    $str.=" ".montant_en_chiffre($val-($nb_million*1000000));
    $val=0;
   }
   if ($val>=1000){
    $millier = (int)($val/1000);
    $centaine = (int)(($val - ($millier*1000))/100);
    $dizaine = $val-(($millier*1000)+($centaine*100));
   }
   if ($val<1000 && $val>=100){
    $centaine = (int)($val/100);
    $dizaine = (int)($val - ($centaine*100));
   }
   if ($val<1000 && $val<100){
    $dizaine = $val;
   }
   if ($millier!=0){
    if ($millier<=100){
     $str .=unite($millier)." mille ";
    }
    else{
     $cent= (int)($millier/100);
     $dix=$millier-$cent*100;
     $str .= unite($cent)." cent ".unite($dix)." mille ";
    } 
   }
   if ($centaine!=0){
     $str.=unite($centaine)." cent";
   }
   if ($dizaine!=0){
     $str.=" ".unite($dizaine);
     if ($dizaine==1) $str.=" un";
   }
   return $str;
 }
 
 // Test des fonctions
 echo montant_en_chiffre(32750);
 
?>

A voir également

Ajouter un commentaire

Commentaires

xtreen
Messages postés
24
Date d'inscription
vendredi 12 octobre 2012
Statut
Membre
Dernière intervention
5 juillet 2015
-
bien essayer!!!!!
jordane45
Messages postés
27064
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 décembre 2019
318 -
Bonjour
Tous ces IF ELSE IF.... ça pique un peu les yeux.
Quelques switch seraient les bienvenus.

Tu devrais jeter un oeil à cette source (à mon avis un peu plus complète)



http://codes-sources.commentcamarche.net/source/43095-convertir-un-chiffre-en-lettre-php
Whismeril
Messages postés
14046
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2019
324 -
Bonjour, description modifiée par l'ajout des balises de code.
Voir ici comment bien utiliser la coloration syntaxique.

Un petit texte expliquant à quoi le code sert et comment il marche serait le bienvenu surtout qu'il n'y a quasiment aucun commentaire.
Le partage de code a d'abord et avant tout un but pédagogique et jeter en pâture le snippet ne l'est pas.

Au fait les chiffres vont de 0 à 9 et sont les briques unitaires pour construire un nombre, comme la lettre pour le mot.
Ton code travaille donc sur des nombres et non des chiffres, même quand tu comptes 2 patates, il s'agit du nombre 2, écrit avec le chiffre 2.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.