[PHP] tableau remplissage incorrect

Résolu/Fermé
jojojr - 9 juin 2007 à 10:04
 jojojr - 9 juin 2007 à 12:00
Bonjour,
Je ne comprends pas pourquoi mon tableau $shopping remplace le contenu des "cases" déjà remplies à mesure qu'il remplit les suivantes...
Merci d'avance de me remettre sur le bon chemin.
Si j'écris ceci:
<?php
$fruits = array('apple','orange','banana');
$shopping = array();
$i = 1;
foreach($fruits as $fruit) {
	$basket->index = $i;
	$basket->fruit = $fruit;
	$shopping [$basket->index] = $basket;
	$i++;
}
?>

pourquoi est-ce que j'obtiens ceci:
Array
(
    [1] => stdClass Object
        (
            [index] => 3
            [fruit] => banana
        )

    [2] => stdClass Object
        (
            [index] => 3
            [fruit] => banana
        )

    [3] => stdClass Object
        (
            [index] => 3
            [fruit] => banana
        )
)

alors que je pensais obtenir ça:
Array
(
    [1] => stdClass Object
        (
            [index] => 1
            [fruit] => apple
        )

    [2] => stdClass Object
        (
            [index] => 2
            [fruit] => orange
        )

    [3] => stdClass Object
        (
            [index] => 3
            [fruit] => banana
        )
)
A voir également:

2 réponses

Tu utilise quel logiciel ?
0
Voici la solution (fournie par Valery F. Merci!)
Ce que tu enregistres dans chaque case est la référence sur un
pseudo-objet $basket qui est toujours le même. Lorsque tu remets à jour les
champs, tu modifie le seul et unique $basket qui est réindexé dans toutes les
cases de ton tableau. Il faut forcer php à créer une nouvelle réréfence
comme ceci :

foreach($fruits as $fruit){
   unset($basket);
   $basket->index = $i;
   $basket->fruit = $fruit;
   $shopping[$i] = $basket;
   $i++;
}
?>
0