Transformer des chiffres en symbole et l'afficher

adhessa - Modifié le 24 juil. 2019 à 21:30
JeuDuTaquin Messages postés 251 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 31 mai 2023 - 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 251 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 31 mai 2023 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 251 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 31 mai 2023 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 72
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