Comment fonctionne réellement foreach en PHP ? Analyse détaillée avec des exemples
Bonjour à tous ! J'écris en PHP depuis plusieurs mois, mais je ne comprends toujours pas complètement comment fonctionne foreach. Dans la documentation, il est dit que c'est un "moyen pratique de parcourir les tableaux", mais je suis tourmenté par des questions auxquelles je ne trouve pas de réponses.
Par exemple, je sais qu'en utilisant foreach avec une référence (&$value), on peut modifier les éléments du tableau. Mais pourquoi après la boucle, la variable $value référence-t-elle toujours le dernier élément ? Cela entraîne des bugs inattendus.
Je me demande aussi : que se passe-t-il "sous le capot" ? Une copie du tableau est-elle créée à chaque foreach ? J'ai entendu dire que PHP utilise un mécanisme de copy-on-write, mais je ne comprends pas comment cela fonctionne dans le contexte des boucles.
Voici un exemple qui me trouble :
```php
$array = [1, 2, 3];
foreach ($array as &$value) {
$value *= 2;
}
// Maintenant $array = [2, 4, 6]
// Mais si après la boucle on fait :
foreach ($array as $value) {
echo $value;
}
// Résultat : 2 4 4 au lieu de 2 4 6 ! Pourquoi ?
```
J'ai aussi remarqué qu'avec foreach sur des tableaux imbriqués
No answers yet.
Connectez-vous pour laisser une réponse