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 :

switch subtilité du continue


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 47
    Par défaut switch subtilité du continue
    Une petite question concernant switch

    Dans le manuel PHP il est indiqué que l'on peut utiliser continue, ça doit pas servir à grand chose, mais bon du coup j'ai testé lol

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $prix = 1;
    switch($prix)
    {
    case 1 :
    echo('salut 1');
    continue;
    default :
    echo('fin');
    }
    et bien si il y a une petite nuance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $prix = 1;
    switch($prix)
    {
    case 1 :
    echo('salut 1');
    default :
    echo('fin');
    }
    le code 1 affiche "fin" alors que le code 2 ne l'affiche pas ALORS que j'ai pas mis BREAK volontairement pour le test (sinon continue servirait à rien lol).

    Pouvez vous m'expliquer d'ou vient cette subtilité

    On aurait pu pensé que sans break le code 2 affiche aussi (default)

    et quel peut être l’intérêt de "continue" dans la pratique

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu t'es mélangé : le code 1 n'affiche pas "fin" alors que le code 2 l'affiche.
    D'ailleurs il l'affiche non pas parce qu'il est dans le cas "default" mais parce qu'il n'y pas de break au dessus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $prix = 1;
    switch($prix)
    {
        case 1 :
            echo('salut 1'); //s'affiche
        case 2:
            echo('fin'); //s'affiche
    }
    break et continue ne sont pas spécifiques aux boucles switch.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 373
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 373
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par sabotage Voir le message
    break et continue ne sont pas spécifiques aux boucles switch.
    switch( ) est une boucle ?

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 47
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $prix = 1;
    switch($prix)
    {
    case 1 :
    echo 'salut 1';
    continue;
    default :
    echo 'fin code1';
    }
    ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $prix = 2;
    switch($prix)
    {
    case 2 :
    echo 'salut 2';
    default :
    echo 'fin code2';
    }
    ?>
    oui je me suis trompé c'est le code 2 qui affiche l'action "default" du coup je comprend mieux que code 2 affiche l'action "default" puisque rien ne l'arrête.

    par contre, cela veux dire que "continue" (dans code 1) se comporte comme break ??? puisqu'il arrête le script est ne va pas jusqu'à "default" ??? pourtant j'ai pas dis arrête j'ai dis continue...

    nb : j'ai eu une révélation pour le débutant que je suis echo n'est pas une fonction et donc il ne faut pas mettre les () si on veut mettre plusieurs expressions... comme quoi ce qui peut sembler évident ne l'ai jamais hummm l'informatique c'est logique mais c'est plein d’exception lol qui confirme la règle bien sur tout compte fait c'est comme la littérature comme quoi au bout de 3 jours on apprend encore des choses...

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 47
    Par défaut
    Citation Envoyé par Séb. Voir le message
    switch( ) est une boucle ?
    non c'est une condition même moi je sais ça houuuuuuuuuuuuuuuuuu

    Leçon 1 page 1 switch structure de controle : condition.

    Les boucles c'est page 2 j'y suis pas encore lol

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    par contre, cela veux dire que "continue" (dans code 1) se comporte comme break ?
    C'est même marqué dans la doc :
    la structure continue s'applique aux structures switch et se comporte de la même manière que break
    C'est logique puisque continue avance jusqu'à la fin de l'instruction mais qu'un switch ne s'execute qu'une fois.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre actif
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 47
    Par défaut
    en parlant de echo qui n'est pas une fonction, cela veut dire qu'il ne peut pas afficher un résultat ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for($n=1,$z=9;$n<10,$z>0;$n++,$z--)
    {
    $e=$n+$z;
    echo $n.' + '.$z.' = '.$e.'<BR><br>';
    }
    ?>
    cela fonctionne car echo se contente d'afficher les variables

    par contre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for($n=1,$z=10;$n<10,$z>0;$n++,$z--)
    {
    echo $n.' + '.$z.' = '.$n+$z.'<BR><br>';
    }
    ?>
    n'affiche pas 1 + 9 = 10, cela affiche que 10

    alors que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for($n=1,$z=10;$n<10,$z>0;$n++,$z--)
    {
    echo $n.' + '.$z.' = '.'<BR><br>';
    }
    ?>
    affiche bien 1 + 9 =

    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for($n=1,$z=9;$n<10,$z>0;$n++,$z--)
    {
    echo $n+$z.'<BR><br>';
    }
    affiche bien 10 donc l’addition se fait bien, je comprend pas alors pour quoi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for($n=1,$z=9;$n<10,$z>0;$n++,$z--)
    {
    echo $n.' + '.$z.' = '.$n+$z.'<BR><br>';
    }
    ?>
    ne m'affiche pas 1 + 9 = 10

    alors que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for($n=1,$z=9;$n<10,$z>0;$n++,$z--)
    {
    echo $n,' + ',$z,' = ',$n+$z,'<BR><br>';
    }
    cela fonctionne...

    le problème vient de la concaténation ???

    Ma question est pourquoi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for($n=1,$z=9;$n<10,$z>0;$n++,$z--)
    {
    echo $n.' + '.$z.' = '.$n+$z.'<BR><br>';
    }
    ?>
    ne fonctionne pas

  8. #8
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 373
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 373
    Billets dans le blog
    17
    Par défaut
    Une petite question concernant switch

    Dans le manuel PHP il est indiqué que l'on peut utiliser continue
    De la même manière que break, et généralement c'est ce dernier que tu verras.

    et bien si il y a une petite nuance
    Entre quoi et quoi ?

    le code 1 affiche "fin" alors que le code 2 ne l'affiche pas
    A ce stade il devrait.

    ALORS que j'ai pas mis BREAK volontairement pour le test
    Si tu colles un script il est entendu que c'est celui-ci qui est exécuté, sinon on ne sait plus quoi penser. Le code 2 + break = normal que "fin" ne soit pas affiché, le résultat aurait été le même avec un continue.

Discussions similaires

  1. Figer colonnes dans formulaire continu
    Par Mr.Gus dans le forum IHM
    Réponses: 10
    Dernier message: 30/11/2003, 13h59
  2. L'instruction continue ?
    Par Patrick PETIT dans le forum C
    Réponses: 11
    Dernier message: 10/03/2003, 08h05
  3. Réponses: 6
    Dernier message: 26/01/2003, 13h45
  4. [VB6] attendre un événement pour continuer l'exécution
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 21
    Dernier message: 12/11/2002, 13h08
  5. [langage] Continuer a parser une ligne
    Par D[r]eadLock dans le forum Langage
    Réponses: 5
    Dernier message: 30/09/2002, 18h49

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