Si je parcourt deux fois un tableau, une fois par référence puis par valeur, PHP écrasera la dernière valeur du tableau si j'utilise le même nom de variable pour chaque boucle. Ceci est mieux illustré par un exemple:Pourquoi PHP écrase-t-il des valeurs lorsque je parcourt deux fois ce tableau (par référence, par valeur)
$array = range(1,5);
foreach($array as &$element)
{
$element *= 2;
}
print_r($array);
foreach($array as $element) { }
print_r($array);
sortie:
Array ([0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10)
Array ([0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 8)
Notez que je ne suis pas Je cherche une solution, je cherche à comprendre pourquoi cela se passe. Notez également que cela ne se produit pas si les noms de variables dans chaque boucle ne sont pas tous $element
, donc je suppose qu'il s'agit de $element
toujours dans la portée et une référence après la fin de la première boucle.
Merci! Cela a un sens complet. –