Transformer des chiffres en symbole et l'afficher

Signaler
-
Messages postés
187
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
12 octobre 2020
-
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

Messages postés
187
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
12 octobre 2020
5
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.
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"...
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 !
Messages postés
187
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
12 octobre 2020
5 > adhessa
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.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
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
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...