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 :

problème étrange boucle foreach()


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Points : 13
    Points
    13
    Par défaut problème étrange boucle foreach()
    Bonjour tout le monde,

    J'ai un problème lorsque je veux afficher la valeur d'une variable après avoir été modifié dans une boucle foreach(), elle m'affiche "0" (comme si elle ne contenait rien, ou tout ce qui était dedans a été supprimé ...
    J'ai aussi initialisé la variable avant la boucle, peut-être n'est-ce pas possible en fait ? Mais ce que je trouve bizarre, c'est que j'ai l'air d'être le seul à qui ça arrive car j'ai pas vu de personnes avec le même problème en cherchant sur Google.

    Exemple de code avec ce problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    $unArray = array('valeur 1', 'valeur 2');
    $uneVariable = '';
    foreach ($unArray as $valeurCurseur) {
    $uneVariable += $valeurCurseur;
    }
    echo $uneVariable;
    ?>
    Logiquement, $uneVariable devrait afficher :valeur 1valeur 2
    non ?

    Merci d'avance,
    Sylra

  2. #2
    Membre actif Avatar de Meloooo
    Femme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2008
    Messages : 324
    Points : 288
    Points
    288
    Par défaut
    Dans votre code non, puisque le echo est en dehors de la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $unArray = array('valeur 1', 'valeur 2');
    $uneVariable = '';
    foreach ($unArray as $valeurCurseur) {
    $uneVariable = $valeurCurseur;
    echo $uneVariable;
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Meloooo Voir le message
    Dans votre code non, puisque le echo est en dehors de la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $unArray = array('valeur 1', 'valeur 2');
    $uneVariable = '';
    foreach ($unArray as $valeurCurseur) {
    $uneVariable = $valeurCurseur;
    echo $uneVariable;
    }
    Le problème c'est que j'ai besoin de la valeur total de la variable qui se concatène dans la boucle pour l'utiliser après ...

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    array_sum ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Meloooo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $unArray = array('1', '5');
    echo $unArray[0] += $unArray[1];
    Désolé, j'ai pas pensé à préciser, ce n'est pas un tableau dont je connais la longueur dans mon cas

  6. #6
    Membre actif Avatar de Meloooo
    Femme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2008
    Messages : 324
    Points : 288
    Points
    288
    Par défaut
    Dans ce cas la je pense que la solution de stealth35 ira très bien pour ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $unArray = array('valeur 1', 'valeur 2');
    echo array_sum($unArray);

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Meloooo Voir le message
    Dans ce cas la je pense que la solution de stealth35 ira très bien pour ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $unArray = array('valeur 1', 'valeur 2');
    echo array_sum($unArray);
    Je viens d'essayer, il m'affiche encore 0...
    sûrement car array_sum doit marcher que sur des entiers (somme des entiers du tableau quo)

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Confusion entre l'opérateur d'addition + et de concaténation . ? La conversion de ces chaînes en entier donnant 0.

    Si c'est le cas, autant utiliser les fonctions natives qui réalise ce travail (implode).

  9. #9
    Membre actif Avatar de Meloooo
    Femme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2008
    Messages : 324
    Points : 288
    Points
    288
    Par défaut
    Il faut bien sur remplacer 'valeur 1' et 'valeur 2' par des entiers !

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    c'est ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $unArray = array('valeur 1', 'valeur 2');
    var_dump(implode('', $unArray));
    //string 'valeur 1valeur 2' (length=16)
    ou ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $unArray = array('1', '5');
    var_dump(array_sum($unArray));
    //int 6

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    c'est ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $unArray = array('valeur 1', 'valeur 2');
    var_dump(implode('', $unArray));
    //string 'valeur 1valeur 2' (length=16)
    ou ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $unArray = array('1', '5');
    var_dump(array_sum($unArray));
    //int 6
    J'avais cherché, et j'avais trouvé du coup la fonction implode(), merci beaucoup quand même.

    Problème résolu ! Merci pour vos aides.

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

Discussions similaires

  1. Comportement étrange dans boucles foreach
    Par Tyra3l dans le forum Langage
    Réponses: 5
    Dernier message: 17/02/2012, 23h30
  2. Problème boucle foreach
    Par AurelienNF dans le forum Langage
    Réponses: 10
    Dernier message: 10/09/2011, 19h16
  3. [MySQL] Problème avec boucle foreach
    Par dschaefer79 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/07/2010, 17h42
  4. Problème commande do dans boucle foreach
    Par jchampen dans le forum Langage
    Réponses: 5
    Dernier message: 23/10/2008, 14h56
  5. [FLASH MX2004 PRO] Problème étrange avec LoadClip...
    Par josemoroide dans le forum Flash
    Réponses: 6
    Dernier message: 04/08/2004, 15h41

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