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 :

Changement de valeur dans le tableau


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2023
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2023
    Messages : 16
    Par défaut Changement de valeur dans le tableau
    Salut tout le monde,

    en PHP, comme vous pouvez le voir dans la note de ivan at mailinator dot com dans ce lien: https://www.php.net/manual/en/language.references.php, il y a un changement de valeurs dans le tableau suite à deux foreach sans traitement.

    Si on a ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    $arr = array('a'=>'first', 'b'=>'second', 'c'=>'third');
    foreach ($arr as &$a); // do nothing. maybe?
    foreach ($arr as $a);  // do nothing. maybe?
    print_r($arr);
    ?>
    En output, on obtient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Array
    (
        [a] => first
        [b] => second
        [c] => second
    )
    Arrivez vous à le comprendre de votre côté?
    Si oui, quelle est l'explication s'il vous plaît?

    Je vous remercie par avance,

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 670
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 670
    Par défaut
    le souci est expliqué dans la documentation de foreach :
    https://www.php.net/manual/fr/contro...es.foreach.php

    avec le 1er foreach, $val contient successivement la référence à chaque valeur.
    et donc à la fin $val contient une référence à la dernière case.
    donc quand le 2e foreach réutilise cette variable, la variable contient toujours la référence et donc la valeur de la dernière case va être écrasée par chaque valeur.

    ça peut se voir avec ce code :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $arr = array('a'=>'first', 'b'=>'second', 'c'=>'third');
    foreach ($arr as &$a); // do nothing. maybe?
    foreach ($arr as $a) {
        print_r($arr);
    }
     
    /*
    résultat : 
     
    Array ( [a] => first [b] => second [c] => first )
    Array ( [a] => first [b] => second [c] => second )
    Array ( [a] => first [b] => second [c] => second ) 
     
    */


    moralité : évitez d'utiliser les références

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2023
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2023
    Messages : 16
    Par défaut
    Salut,

    Je te remercie.

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

Discussions similaires

  1. changement une valeur dans un tableau par un autre
    Par nisrinege dans le forum MATLAB
    Réponses: 2
    Dernier message: 21/08/2014, 10h00
  2. [LG] Valeur dans un tableau
    Par hunter dans le forum Langage
    Réponses: 3
    Dernier message: 16/06/2005, 13h59
  3. [tableau]Valeur dans un tableau
    Par kisscool31 dans le forum Collection et Stream
    Réponses: 30
    Dernier message: 17/05/2005, 09h45
  4. [Tableaux]Ajouter des valeurs dans un tableau
    Par Antoine1183 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 03/04/2005, 13h41
  5. Décaler des valeurs dans un tableau
    Par sh2003 dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2004, 16h01

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