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 :

parcourir une boucle FOR qu'une seule fois


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 76
    Par défaut parcourir une boucle FOR qu'une seule fois
    Bonjour à tous !

    Je vous expose mon problème :

    Je souhaite arrêter une boucle FOR. Je pensais que le code suivante marcherais mais malheureusement ça fait planter mon navigateur car elle ne s'arrête jamais :

    imaginez le code suivant simple :
    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
    17
    18
    19
     
     
    $d[1] = 0;
    $d[2] = 0;
    $d[3] = 0;
    $d[4] = 0;
    $d[5] = 0;
     
    for ($i = 1; $i <= 5; $i++)
    {
         if ($d[$i] = 1)
         {
             break;
         }
         else
         {
             $i = "";
         }
    }
    Alors la chose que je me dis c'est que la boucle va être parcouru de 1 à 5, la variable $i prenant ainsi successivement les valeurs 1,2,3,4 puis 5 et enfin s'arrêter se rendant compte que pour n'importe qu'elle $i appartenant à [1;5], $d[$i] n'est jamais égal à 1.

    D'où le fameux ELSE devant renvoyer $i = "";

    Cependant il s'avère que l'itération se piège dans la boucle for et la réitère à l'infini.... Ce qui fait tout planter forcément.

    Ma question est donc, comment intégrer une condition supplémentaire dans la boucle FOR afin qu'elle n'effectue l'opération qu'une seule fois.

    Merci d'avance pour vos réponses !

    Cordialement,
    Globolite

  2. #2
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    exit(); pour sortir

  3. #3
    Rédacteur

    Avatar de Torgar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    2 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2007
    Messages : 2 334
    Par défaut
    Salut,

    En rajoutant un = dans ta condition ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ( $d[$i] == 1 ) {
        break;
    }
    Sinon pourquoi mettre un else ? Il ne fait rien et sert à rien dan ce cas.

    Edit : exit() arrête le script entier alors que break fait juste sortir de la boucle.
    Je ne suis pas schizophrène, nous sommes unanime !!!

    ► Pensez à la balise code et au CODE HTML GENERE !!!!
    ► Au si c'est le cas et au à ceux qui vous ont aidé.
    Vous souhaitez participer aux rubriques CSS et (X)HTML ? Contactez-nous !

    Créer des colonnes de même hauteur en CSS
    Glossaire CSS
    Les bordures en CSS3
    Les transitions en CSS3

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 76
    Par défaut
    Merci pour vos réponses !

    J'essaie ça de suite !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 76
    Par défaut
    Alors en effet le exit(); ne peut pas marcher dans mon cas.

    Mais j'ai essayé ce que tu as proposé et ça ne fonctionne pas également.

    En remplaçant simplement,
    $d[$i] = 1 par $d[$i] == 1 dans mon IF

    ça ne fonctionne pas également.

    Et mon ELSE avait pour but d'obtenir $i = "" si jamais $d[$i] n'est jamais égale à 1 une fois la boucle parcourue UNE SEULE FOIS.

  6. #6
    Membre confirmé

    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 164
    Par défaut
    Tu mets dans ta condition $i = 6

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 76
    Par défaut
    Ah ça me paraît intéressant, ça donnerais un truc comme ça ?



    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
    17
    $d[1] = 0;
    $d[2] = 0;
    $d[3] = 0;
    $d[4] = 0;
    $d[5] = 0;
     
    for ($i = 1; $i <= 5; $i++)
    {
         if ($d[$i] = 1 || $i = 6)
         {
             break;
         }
         else
         {
             $i = "";
         }
    }

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Mais dans le else, tu réaffectes ton compteur $i en lui donnant en plus comme valeur une chaine vide
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

Discussions similaires

  1. [POO] parcourir un objet json avec une boucle for in
    Par bucheron007 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 19/01/2009, 12h55
  2. Réponses: 6
    Dernier message: 26/11/2007, 15h25
  3. [SQL] Boucle SQL dans une boucle for
    Par architecte dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/08/2007, 11h47
  4. Réponses: 2
    Dernier message: 08/03/2007, 11h06
  5. utiliser une valeur float pour une boucle for
    Par didi59650 dans le forum Débuter
    Réponses: 6
    Dernier message: 18/04/2006, 17h32

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