[PHP] tableau remplissage incorrect

Résolu
jojojr -  
 jojojr -
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
        )
)
Configuration: Windows XP
Firefox 2.0.0.4

2 réponses

  1. jojojr
     
    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