[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++;
}
?>