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 :

Boucle while ? [Débutant(e)]


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Inscrit en
    Août 2004
    Messages
    499
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 499
    Par défaut Boucle while ?
    Bonjour,
    j'ai un problème avec cette boucle !

    $i = 1;
    $somme = 0;
    while ($i<=3)
    {
    $somme = $somme + $i;
    $i++;
    }
    echo "La somme est égal à $somme";

    Mon problème c'est qu'elle renvoie "6"
    Mais je comprend pas comment sa fonctionne, puisque $somme est égal à 0 et il ne fait pas partie du test qui ne concerne que $i et doit donc arrèter à 3 comme le test l'indique..
    Merci d'avance

  2. #2
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    1 + 2 + 3 = 6

  3. #3
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Ce comportement est tout à fait normal ^^
    En effet, à chaque tour de boucle, tu ajoutes la valeur de $i à la valeur de $somme. En d'autres termes, $somme est incrémenté de $i. En d'autres termes, $somme sera égal à $i au premier tour puis il lui sera toujours supérieur.

    Pour mieux comprendre, remplace :
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo ($somme = $somme + $i).'<br />';

  4. #4
    Membre éclairé
    Inscrit en
    Août 2004
    Messages
    499
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 499
    Par défaut
    En faite j'ai l"habitude des for(), mais là j'ai beau retourner le problème je ne vois pas, puisque c'est $i qui est dans sommes,
    mais c'est $i qui est incrémenté et pas $somme ?
    Sa devrait donc être ::
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    1 + 1 = 2
    2  + 1 = 3
    3 + 1 = 4
    Pour $i. Et donc somme est à 0 et ne bouge pas puisqu'il n'est pas incrementé
    et donc s'arrète là en renvoyant 4 ?
    Parceque l'incrementation rajoute 1
    ????????????????????????????
    je sais plus ou j'en suis

  5. #5
    Membre éclairé
    Inscrit en
    Août 2004
    Messages
    499
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 499
    Par défaut
    A mois que
    $somme = $ajout + $i;
    oui le faite qu'il y est deux $somme
    ma troublé puisque un est un résultat de l'autre + $i
    Sa doit être la seule explication et elle tiens la route
    Parceque le réulsta écrase l'autre.

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    C'est surtout que chaque résultat utilise le précédent comme base, donc forcément la valeur augmente à chaque itération. Cela fonctionne de manière tout à fait identique si tu avais un for au lieu du while, crois-moi...
    Il faudrait que tu aies $somme = $i; au lieu de $somme = $somme + $i;
    Au passage, ta syntaxe est équivalente à $somme += $i;, des fois que ça t'aide...

  7. #7
    Membre éclairé
    Inscrit en
    Août 2004
    Messages
    499
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 499
    Par défaut
    Je crois aussi que c'est mon livre qui est tordus, pourtant je l'aime bien j'ai des exercice après chaque cour qui me permette de valider ma lecture sans trop d'effort. C'est désopilant le nombres d'erreur qu'on trouve dans les livres d'infos, là je n'en parle pas mais je suis désemparé d'avoir que des livres qui ont des codes branlant. C'est chassieux, grrr.
    Merci pour ton aide

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

Discussions similaires

  1. boucle while trop lente
    Par atouze dans le forum Access
    Réponses: 17
    Dernier message: 15/06/2005, 17h35
  2. Boucle while & read
    Par gibet_b dans le forum Linux
    Réponses: 4
    Dernier message: 29/04/2005, 16h38
  3. boucle while et post incrémentation
    Par tut dans le forum C++
    Réponses: 7
    Dernier message: 10/12/2004, 18h24
  4. [MFC] Dialog dans une boucle while
    Par oxor3 dans le forum MFC
    Réponses: 5
    Dernier message: 23/04/2004, 23h51
  5. [débutant]Documentation? boucle "while"? Session?
    Par o151181 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 19/01/2004, 16h20

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