[Php] Fonction simple avec petit bug
Résolu
djflexlive
Messages postés
557
Date d'inscription
Statut
Membre
Dernière intervention
-
djflexlive Messages postés 557 Date d'inscription Statut Membre Dernière intervention -
djflexlive Messages postés 557 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voici une fonction simple qui me permets de mettre des étoiles selon une valeur de 0 à 100. La fonction est correcte sauf pour une valeur de 0 ; je comprends pas trop ...
Qui aurait une idée svp ?
Les valeurs de 10 à 100 fonctionnent (1/2 étoile et 5 étoiles). Pour une valeur de 0 ; j'ai 5 étoiles ...
Voici une fonction simple qui me permets de mettre des étoiles selon une valeur de 0 à 100. La fonction est correcte sauf pour une valeur de 0 ; je comprends pas trop ...
Qui aurait une idée svp ?
function note_show() { global $note_value; $value = $note_value/20; for ( $i = 0; $i < 5; $i++) { switch ($value) { case ( $value > $i+0.5 ): echo '<img src="/images/etoil_full.png" alt=""/> '; break; case ( $value == $i+0.5 ): echo '<img src="/images/etoil_semi.png" alt=""/> '; break; case ( $value <= $i ): echo '<img src="/images/etoil_empty.png" alt=""/> '; break; } } }
Les valeurs de 10 à 100 fonctionnent (1/2 étoile et 5 étoiles). Pour une valeur de 0 ; j'ai 5 étoiles ...
A voir également:
- [Php] Fonction simple avec petit bug
- Fonction si et - Guide
- Iphone 14 simple - Guide
- Iptv bug forum ✓ - Forum Box et Streaming vidéo
- Iptv bug - Forum Box et Streaming vidéo
- Petit 2 ✓ - Forum Bureautique
5 réponses
Bonjour
C'est syntaxiquement correct, mais ça ne fait certainement pas ce que tu veux. En effet, case ( $value > $i+0.5 ) ne signifie absolument pas "dans le cas où $value est supérieur à $i+5". Regarde la signification du switch ... case : on calcule ce qu'il y a dans le switch (ici une simple variable) et ce qu'il y a dans le case. Ce que tu as mis dans le case, c'est une comparaison, c'est à dire un truc qui est soit vrai soit faux.
Si $value vaut 0, $value > $i+0.5 est faux. Mais $value est lui-même faux (car 0 = faux). Donc la variable du switch ($value) est bien égale à l'expression du case ( $value > $i+0.5 ) puisque les deux sont égaux à faux. Donc on exécute ce case là
Voilà pourquoi ça ne marche pas comme tu veux.
Avec des 'if' tu t'en sortiras sans problème.
C'est syntaxiquement correct, mais ça ne fait certainement pas ce que tu veux. En effet, case ( $value > $i+0.5 ) ne signifie absolument pas "dans le cas où $value est supérieur à $i+5". Regarde la signification du switch ... case : on calcule ce qu'il y a dans le switch (ici une simple variable) et ce qu'il y a dans le case. Ce que tu as mis dans le case, c'est une comparaison, c'est à dire un truc qui est soit vrai soit faux.
Si $value vaut 0, $value > $i+0.5 est faux. Mais $value est lui-même faux (car 0 = faux). Donc la variable du switch ($value) est bien égale à l'expression du case ( $value > $i+0.5 ) puisque les deux sont égaux à faux. Donc on exécute ce case là
Voilà pourquoi ça ne marche pas comme tu veux.
Avec des 'if' tu t'en sortiras sans problème.
Parce que dans le switch, les case font références à des entiers ou des strings tandis que dans ton cas, tu fais références à un booléen :
il ne faut pas comprendre
"si ta $value est aussi vrai que x est supérieur à y" ce qui n'a strictement aucun sens dans la logique (bien que ça soit syntaxiquement cohérence.
il ne faut pas comprendre
case ( x > y )comme "dans le cas où x est supérieur à y", mais comme
"si ta $value est aussi vrai que x est supérieur à y" ce qui n'a strictement aucun sens dans la logique (bien que ça soit syntaxiquement cohérence.
Bonjour,
Je peux me tromper, mais est-ce correct d'utiliser le switch case comme ca ? C'est a dire, de tester une condition d'égalité dans le case ?
Peut-être qu'en remplaçant par des if else, ce sera mieux ?
Je peux me tromper, mais est-ce correct d'utiliser le switch case comme ca ? C'est a dire, de tester une condition d'égalité dans le case ?
Peut-être qu'en remplaçant par des if else, ce sera mieux ?
En effet avec des if, ca passe sans problèmes. Merci à vous trois.
A part pour l'explication donné par "le père" ; pourquoi l'utilisation du switch n'était pas bonne ? Trop simple comme conditions pour utiliser le switch ?
A part pour l'explication donné par "le père" ; pourquoi l'utilisation du switch n'était pas bonne ? Trop simple comme conditions pour utiliser le switch ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question