Bonjour à tous,
J'ai une petite question concernant la création de tableau d'objets en PHP 5.3. J'ai le code suivant :
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 $foolist = array(); $myad = new StdClass(); $myad->data = 'foo'; $foolist[] = $myad; var_dump($foolist); $myad->data = 'foo2'; $foolist[] = $myad; var_dump($foolist);
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).
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" } }
Est-ce que quelqu'un pourrait me dire si je m'y prends mal et pourquoi j'ai ce comportement ?
Merci de votre aide.
Partager