Wie foreach in PHP wirklich funktioniert? Detaillierte Analyse mit Beispielen
Hallo zusammen! Ich schreibe seit einigen Monaten in PHP, verstehe aber immer noch nicht vollständig, wie foreach funktioniert. In der Dokumentation steht, dass es eine "bequeme Möglichkeit zum Durchlaufen von Arrays" ist, aber ich habe Fragen, auf die ich keine Antworten finde.
Zum Beispiel weiß ich, dass man bei der Verwendung von foreach mit einer Referenz (&$value) die Elemente eines Arrays ändern kann. Aber warum verweist die Variable $value nach der Schleife immer noch auf das letzte Element? Das führt zu unerwarteten Bugs.
Außerdem interessiert mich: Was passiert "unter der Haube"? Wird bei jedem foreach eine Kopie des Arrays erstellt? Ich habe gehört, dass PHP den copy-on-write-Mechanismus verwendet, verstehe aber nicht, wie das im Kontext von Schleifen funktioniert.
Hier ist ein Beispiel, das mich verwirrt:
```php
$array = [1, 2, 3];
foreach ($array as &$value) {
$value *= 2;
}
// Jetzt ist $array = [2, 4, 6]
// Aber wenn man nach der Schleife macht:
foreach ($array as $value) {
echo $value;
}
// Ergebnis: 2 4 4 statt 2 4 6! Warum?
```
Außerdem habe ich bemerkt, dass bei foreach auf verschachtelten Arrays
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen
Blogs