Kritik an PHP: foreach ohne call-by-reference

Wie gerne nutzt man foreach-Schleifen, sie sind praktisch, da man dadurch sicher weiß, dass man keine Endlosschleife verursacht (da man Elemente in endlicher Zeit auch nur endlich befüllen kann) und da man sicher alle Elemente erreicht. Genau diese Vorteile wollte ich ebenfalls in PHP nutzen und über ein Array iterieren. Doch leider kann man so nichts in den Array-Elementen ändern. Die Zugriffsvariable ist nicht, wie man vielleicht erwarten würde eine Referenz auf das eigentliche Element in der Liste, die man gerade durchläuft, sondern sie ist eine echte Kopie davon. Folglich werden alle Änderungen auch nur in die Kopie gemacht und nachdem die Schleife fertig ist, sind alle Änderungen wieder vollständig verschwunden. Wieso hier nicht call-by-reference, wie in anderen Sprachen auch, angewendet wird entzieht sich meiner Kenntnis. Bedauerlicherweise ist auch ein PHP-typisches “&” vor der Variable zur referentiellen Übergabe in diesem Sprachkonstrukt nicht erlaubt…

Also nicht verzweifeln, sondern for und while Schleifen in PHP statt foreach verwenden!