Transformer des chiffres en symbole et l'afficher

adhessa - Modifié le 24 juil. 2019 à 21:30
JeuDuTaquin
Messages postés
221
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
28 avril 2022
- 22 juil. 2019 à 21:19
Bonjour,
Voilà je souhaite à partir d'une variable (par exemple $nbEtoile) ayant pour valeur un chiffre entier ( comme 4 par ex) renvoyer le nombre correspondant mais en symbole ( par ex "*")
soit pour __$nbEtoile = 4 __ avoir affiché sur l'écran__ $nbEtoile = ****

j'ai essayé avec cette boucle :

$nbEtoile = 4;

while ($nbEtoile <= 4)
{
$nbEtoile = "*";
echo $nbEtoile;
$nbEtoile++;
}


Malheureusement ce quis'affiche est une infinité d'étoile et non 4 étoile...
Pouvez - vous m'aider ?

2 réponses

JeuDuTaquin
Messages postés
221
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
28 avril 2022
7
Modifié le 21 juil. 2019 à 01:57
Salut,

Oui, effectivement il y a un problème car, visiblement vous attribuez (si vous êtes prof ou de la police, ajouter des "vous") la valeur 4 au début…

 $nbEtoile = 4; \\\ici variable chaîne ou entière?

while ($nbEtoile <= 4) ;\\\ ici $nbEtoile = 4+n donc jamais 0 à 4.
{
$nbEtoile = "*"; \\\ $nbEtoile=4="*" !!!
echo $nbEtoile;
$nbEtoile++; \\\ $nbEtoile="5" ?
}


Non, deux variables, une de comptage [nbEtoile], et une de variable string [chaîne:$CHRetoiles] !

Tu fais une boucle For … de 1 à nbEtoile…
Dans laquelle tu places une variable $CHRetoiles=$CHRetoiles+"*"; (vide au début)

Puis affichage de $CHRetoiles en sortie de boucle.

Je te laisse te familiariser avec la fonction de boucle "for"
et les initialisations des variables chaînes et des nombres décimaux.

Poste ton résultat, et n'oublies pas de cliquer "résolu" sur ton message principle.
Sinon, avec While, c'est aussi possible, mais avec un décomptage du "compteur étoile", et en testant s'il est positif avec un "nbEtoile--;"
et un $CHRetoiles=$CHRetoiles+"*"; à chaque boucle.

Nota: les codes margés, c'est plus beau…
Amuse-toi bien.
1
Merci pour ton conseil ! j'ai tenté ceci :
<?php

$nbStar=1;
$chrStar = "*";

for ($nbStar = 1; $nbStar <= 4; $chrStar = $chrStar + "*")
{
echo $chrStar;
}
mais en affichage j'ai "*" et une infinité de "0"...
0
re en fait j'ai compris j'avais fait une petite erreur...
<?php

$nb_Star=1;
$chrStar = "*";

for ($nb_Star = 1; $nb_Star <= 4; $nb_Star++ ) \\\à l'incrémentation, j'ai mis la mauvaise variable...
{
echo $chrStar;
}

\\\et là j'ai autant d'étoiles que dans la condition...Merci encore !
0
JeuDuTaquin
Messages postés
221
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
28 avril 2022
7 > adhessa
22 juil. 2019 à 21:19
Oui, c'est presque ça!
Au visuel, tu as des étoiles, mais ce résultat n'est pas mémorisé.
Ici, tu ressorts une variable que tu pourras réutiliser après…
<?php 

$nb_Star=3; \\\ nombre d'étoiles désiré.
$chrStar = "*"; \\\ Caractère à ajouter à chaque boucle.
$Resultat =""; \\\ variable pour stocker les étoiles.

for ($Loop_Star = 0; Loop_Star < $nb_Star; $Loop_Star++ ) \\\ Si le compteur < au nombre d'étoiles désiré.
{
$Resultat = $Resultat + $chrStar;
}
echo $Resultat;


Voilà.
N'oublie pas d'affecter une seul variable ($variable), pour une utilisation.
Toute variable utilisée, perd sa valeur. Il faut donc initialiser une variable à chaque fois que possible.
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
21 juil. 2019 à 07:38
echo str_pad("", $nbEtoiles, "*")

Fonctionnerai sans dout aussi et sans boucle

sur le code de base ; un soci dalo e effet de par la réutilisation d'une même variable
1
Merci pour ton aide ! je n'ai pas réussi à l'utiliser car je suis néophyte j'ai testé avec ce que j'avais appris mais ça m'a mis un message d'erreur...
Mais du coup ça m'a quand même fait avancer car j'ai trouvé ça grâce à votre soutient à tous les deux :
<?php

$nb_Star=1;
$chrStar = "*";

for ($nb_Star = 1; $nb_Star <= 4; $nb_Star++ )
{
echo $chrStar;
}
et le nombre d'étoiles apparaissant correspond à ce que je demande dans la partie condition...je pense que ça devrait être bon...
0