Conversion d'un montant en format alphabétique

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 552 fois - Téléchargée 14 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

3 oct. 2014 à 21:53
bien essayer!!!!!
jordane45
Messages postés
35387
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 mai 2022
356
Modifié par jordane45 le 16/09/2014 à 00:25
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
17323
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
12 mai 2022
599
Modifié par Whismeril le 15/09/2014 à 21:53
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.