Comment fonctionne réellement foreach en PHP ? Décortiquons la copie et les références
Bonjour à tous ! J'ai commencé à apprendre PHP et j'ai rencontré un comportement très étrange de la boucle `foreach`. J'ai écrit un code simple, mais les résultats m'ont dérouté.
```php
1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
// Je m'attendais à ce que toutes les valeurs soient doublées !
```
Je pensais que `$value` était une référence à l'élément du tableau, mais il s'est avéré que c'est une copie. Bon, alors j'ai essayé d'utiliser `&` :
```php
2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 ) — ça marche !
```
Mais ensuite j'ai lu que c'est dangereux à faire, car `$value` reste une référence au dernier élément après la boucle. Et j'ai aussi entendu parler de "pointeurs internes de tableau" et du fait que `foreach` ne fonctionne pas aussi simplement qu'il n'y paraît.
Quelqu'un pourrait-il expliquer comment `foreach` traite les
No answers yet.
Connectez-vous pour laisser une réponse
Blogs