[PHP] tableau remplissage incorrect
Résolu
jojojr
-
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:
pourquoi est-ce que j'obtiens ceci:
alors que je pensais obtenir ça:
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:
- [PHP] tableau remplissage incorrect
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une page - Guide
2 réponses
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 :
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++; } ?>