[PHP] chnager l'affichage des nombres

Résolu/Fermé
Lapinkiller
Messages postés
674
Date d'inscription
samedi 15 avril 2006
Statut
Membre
Dernière intervention
30 août 2010
- 24 juil. 2007 à 11:42
 Pom - 2 oct. 2008 à 16:51
bonjour

lorsque l'on affiche un nombre avec php
par exemple :
$nombre = 10000 ;
echo $nombre ;


ca affiche
10000


et moi je voudrai que ca affiche plutot (par exemple)
10'000


car sinon ca peut etre dur a lire s'il y a plein de chiffres

7 réponses

Il ne me semble pas possible de faire cela sans passer par une fonction.
Avec un strlen et un substr ca devrait pas être trop compliqué ;)
2
Lapinkiller
Messages postés
674
Date d'inscription
samedi 15 avril 2006
Statut
Membre
Dernière intervention
30 août 2010
101
24 juil. 2007 à 11:54
j'imagine bien qu'il faut passer par une fonction XD
c'es pas le saint esprit qui va me faire ca lol
1
Beuuuh, t'es étudiant ou pas ? :P

allez un idée vite fait, à mon avis faudra la vérifier mais ca devrait marcher :

function groupe($nb,$sep)
{
$nbL = strlen($nb);
$nbO = $nbL%3;
$ret = substr(0,$nbO);
for ($i = $nbO; $i < $nbL; $i+3)
{
$ret .= substr($i,3);
$ret .= ($i < $nbL-3) ? $sep : '';
}
return $ret;
}
1
Lapinkiller
Messages postés
674
Date d'inscription
samedi 15 avril 2006
Statut
Membre
Dernière intervention
30 août 2010
101
24 juil. 2007 à 12:51
je suis bien étudiant mais on a pas encore vraiment commencer à voir le php en cours lol

le php je l'ai appris par moi même XD

bon je vias regarder ta fonction et essayer de la comprendre :
petites questions pour savoir si j'ai bien compris :

$nb est mon nombre dont je veux modifier l'affichage
$sep est le caratere séparateur des groupes de chiffre

 $nbL = strlen($nb);
$nbO = $nbL%3; 
ca calcule le nombre de groupe de chiffres


 for ($i = $nbO; $i < $nbL; $i+3)
{
   $ret .= substr($i,3);
   $ret .= ($i < $nbL-3) ? $sep : '';
} 
ca ajoute le séprateur

c'est bien ca ?
sinon j'ai pas encore testé mais comment ca se passe si ce n'est pas un multiple de 3 le groupe de 2 chiffre par exemple pour 10'000 ce sera bien les 2 premiers chiffres du nombres ?
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J'ai écris ca un peu à l'arrache et je viens de me rendre compte que t'allais avoir (ou risque d'avoir) un peu de soucis et que le code est pas top.

Déja dans les substr j'ai oublié de mettre la chaîne originale .... mea culpa, donc il faut remplacer substr(x,z) par substr($nb,x,y).

Concernant le ppe t'as compris si ce n'est que le $nbO sert à prendre en compte le 'premier groupe' qui ne sera pas forcément de 3 chiffres (par le biais du modulo).

Par contre j'ai fait un truc pas beau : remplace
$ret .= substr($nb,$i,3);
$ret .= ($i < $nbL-3) ? $sep : '';
par
$ret .= $sep.substr($nb,$i,3);

Du coup ca te donne :

function groupe($nb,$sep)
{
$nbL = strlen($nb);
$nbO = $nbL%3;
$ret = substr($nb,0,$nbO);

for ($i = $nbO; $i < $nbL; $i+3)
$ret .= $sep.substr($nb,$i,3);

return $ret;
}

A priori là ca devrait être bon.

PS : comment tu fais pour présenter ton code de cette facon ?
1
Lapinkiller
Messages postés
674
Date d'inscription
samedi 15 avril 2006
Statut
Membre
Dernière intervention
30 août 2010
101
24 juil. 2007 à 13:50
PS : comment tu fais pour présenter ton code de cette facon ?


qu'est ce que tu entend par la ? pour que ca s'affiche differement du reste du message ? c'est avec "code"



sinon je viens de tester et il y avait une erreur de syntaxe dns la boucle FOR ce qui fait que j'avais une boucle infinie XD car $i ne prenait pas la nouvelle valeur à chaque tour de la boucle

function groupe($nb,$sep)
{
    $nbL = strlen($nb);
    $nbO = $nbL%3;
    $ret = substr($nb,0,$nbO);

     for ($i = $nbO; $i < $nbL; $i=$i+3)
        $ret .= $sep.substr($nb,$i,3);

    return $ret;
} 



enfin bon merci pour ton aide mon probleme est résolu XD
0
ou code $i += 3 ;)
C'était pas si compliqué :P
La prochaine fois fait tourner tes méninges ;)
0
Lapinkiller
Messages postés
674
Date d'inscription
samedi 15 avril 2006
Statut
Membre
Dernière intervention
30 août 2010
101
24 juil. 2007 à 15:59
ouai mais j'avais la flemme lol
1
Sinon il y a des fonctions existantes aussi.

https://www.php.net/number_format

Mais bon je conçois qu'on perd le coté challenge :p.
1