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 :

Création de tableau d'objets [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Création de tableau d'objets
    Bonjour à tous,

    J'ai une petite question concernant la création de tableau d'objets en PHP 5.3. J'ai le code suivant :

    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
     
    $foolist = array();
    $myad = new StdClass();
     
    $myad->data = 'foo';
     
    $foolist[] = $myad;
     
    var_dump($foolist);
     
    $myad->data = 'foo2';
     
    $foolist[] = $myad;
     
    var_dump($foolist);
    En exécutant le code, je m'attends à ce que le deuxième var_dump me donne un tableau dont le premier objet contiendrait 'foo' et le deuxième 'foo2'. Or, voilà ce que m'affiche le code :

    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
    20
     
    array(1) {
      [0]=>
      object(stdClass)#1 (1) {
        ["data"]=>
        string(3) "foo"
      }
    }
    array(2) {
      [0]=>
      object(stdClass)#1 (1) {
        ["data"]=>
        string(4) "foo2"
      }
      [1]=>
      object(stdClass)#1 (1) {
        ["data"]=>
        string(4) "foo2"
      }
    }
    D'après ce résultat, le tableau contient 2 fois le même objet. Je suis super étonné de ce résultat (à noter qu'en PHP 5.2, j'obtiens bien ce que je veux), il me semblait que l'opérateur [] assignait par copie et non par référence (ce qu'il semble faire dans le cas présent).

    Est-ce que quelqu'un pourrait me dire si je m'y prends mal et pourquoi j'ai ce comportement ?


    Merci de votre aide.

  2. #2
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci !

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

Discussions similaires

  1. Création et utilisation d'un tableau d'objet
    Par Louuu dans le forum Langage
    Réponses: 5
    Dernier message: 16/10/2013, 15h33
  2. Création d'un tableau d'objet
    Par chronos7 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 3
    Dernier message: 03/05/2006, 12h05
  3. [VB6]Tableau d'objet withevents
    Par soazig dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 13/02/2004, 19h44
  4. [CR] Création de tableau et case à cocher
    Par aysse dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 26/11/2003, 17h07
  5. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33

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