La première foreach ne modifie pas le tableau, comme nous nous y attendions. Cependant, elle provoque $v
pour se voir attribuer une référence à chacun des $a
Les éléments de l'entreprise, de sorte que, lorsque la première boucle est terminée, $v
est, en fait, une référence à $a[2]
.
Dès que la deuxième boucle commence, $v
se voit maintenant attribuer la valeur de chaque élément. Cependant, $v
est déjà une référence à $a[2];
par conséquent, toute valeur qui lui est assignée sera copiée automatiquement dans le dernier élément du tableau !
Ainsi, lors de la première itération, $a[2]
deviendra zéro, puis un, et enfin un à nouveau, étant effectivement copié sur lui-même. Pour résoudre ce problème, vous devez toujours annuler les variables que vous utilisez dans vos boucles foreach by-reference. ou, mieux encore, éviter complètement de les utiliser.