IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Résultat éronné avec un Switch


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Points : 12
    Points
    12
    Par défaut Résultat éronné avec un Switch
    Bonjour,

    La question est peut être un peu bête, mais bon ... .

    J'ai une structure de contrôle switch qui dans la configuration ci-dessous ne retourne pas le bon résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <?php
    switch (5) {
    case 4:
        echo "égale 0";
        break;
     
    case 3 || 7:
        echo "égale 3 ou 7";
        break;	
     
    case 5:
        echo "égale 5";
        break;
    }
    ?>
    Le résultat retourne : "égale 3 ou 7", bien qu'une sortie soit possible pour le 5.
    Il suffirait de mettre le "case 5" avant "case 3 || 7", et le tour serait joué.
    Le OU fonctionne ici comme une plage de valeurs allant de 3 à 7.
    Pourriez vous me dire le pourquoi de ce résultat.
    Merci

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    dans ton code, il n'y a pas de comparaison de 5 avec 3 puis avec 7, mais de 5 avec l'expression (3||7).

    Or l'expression (3||7) renvoie le booléen True, qui est équivalent à toute valeur numérique sauf 0 (siu tu remplaces ton 5 par -45, le résultat sera le même...).

    Voici ton switch écrit correctement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    switch (5) {
    case 4:
        echo "égale 0";
        break;
     
    case 3:
    case 7:
        echo "égale 3 ou 7";
        break;	
     
    case 5:
        echo "égale 5";
        break;
    }

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Bonjour Eusebe,

    Merci de ta réponse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Système] Probleme avec un switch case!
    Par Death83 dans le forum Langage
    Réponses: 7
    Dernier message: 29/01/2006, 17h28
  2. [W3C] Résultats différents avec IE ou FF
    Par Linoa dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 17/11/2005, 14h45
  3. Résultat étrange avec les lumières.
    Par MaxPayne dans le forum OpenGL
    Réponses: 4
    Dernier message: 12/04/2005, 19h04
  4. Réponses: 5
    Dernier message: 19/11/2004, 20h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo