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 :

Unset dans un foreach


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 188
    Par défaut Unset dans un foreach
    Bonjour,

    j'ai un souci avec les tableaux, pour faire simple je me suis fait un petit test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $tableau1 = array('0','1','2');
    $tableau2 = array('test0','test1','test2','1','3','4');
    foreach ($tableau1 as $key1 => $value1) {
    	foreach ($tableau2 as $key2 => $value2	) {
    		if ($value2 == 'test1') {
    			unset($tableau1[2]);
    			echo "tableau1 = ";print_r($tableau1);echo "<br>";
    		}
    	}
    }
    echo "APRES<br>tableau1 = ";print_r($tableau1);echo "<br>";
    echo "tableau2 = ";print_r($tableau2);echo "<br>";
    Mon problème est que lorsque je fais unset($tableau1[2]);, ça supprime bien l'élément dans le tableau, mais la 1ère boucle foreach parcourt quand même $tableau1[2]
    Est-ce possible que la boucle foreach prenne en compte la modification du tableau 1 ?

    Merci.

  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
    Il faut passer le tableau par référence à foreach ; sinon il parcourt une copie qui n'est effectivement pas affecté par les modifications en cours de route.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 188
    Par défaut
    Il faut passer le tableau par référence à foreach
    ce qui donne ceci :
    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
    $tableau1 = array('0','1','2');
    $tableau2 = array('test0','test1','test2','1','3','4');
    echo "AVANT<br>tableau1 = ";print_r($tableau1);echo "<br>";
    echo "tableau2 = ";print_r($tableau2);echo "<br>";
    foreach ($tableau1 as $key1 => &$value1) {
    	foreach ($tableau2 as $key2 => $value2	) {
    		echo "value1 = " . $value1 . " et value2 = ".$value2 . "<br>";
    		if ($value2 == 'test1') {
    			unset($tableau1[2]);
    			echo "tableau1 = ";print_r($tableau1);echo "<br>";
    		}
    	}
    }
    echo "APRES<br>tableau1 = ";print_r($tableau1);echo "<br>";
    echo "tableau2 = ";print_r($tableau2);echo "<br>";
    merci !!

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

Discussions similaires

  1. [Boucle] Ordre des Controls dans un ForEach
    Par Djekill dans le forum Windows Forms
    Réponses: 8
    Dernier message: 07/12/2007, 10h38
  2. [Tableaux] Message d'erreur dans un foreach
    Par maysa dans le forum Langage
    Réponses: 2
    Dernier message: 14/08/2007, 11h45
  3. [JSTL] Checkboxes dans un foreach
    Par BadIsGood dans le forum Taglibs
    Réponses: 2
    Dernier message: 29/06/2007, 18h58
  4. [C#]utilisation de variables contenu dans un foreach
    Par beufreecasse dans le forum Windows Forms
    Réponses: 2
    Dernier message: 01/11/2006, 20h42
  5. Problème de variable dans un foreach
    Par VolaiL dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 18/05/2006, 16h57

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