Moin!
Der springende Punkt ist: Durch die letzte foreach-Schleife wird offensichtlich das Array $projekte verändert. Das Muster der Veränderung kann ich noch nicht nachvollziehen. In diesem Beispeil werden die Werte von Projekt D durch die von Projekt C ersetzt. Warum?
weil $w eine Referenz ist. Siehe Referenzen und insbesondere die Unterseite "Referenzen aufheben".
Top, herzlichen Dank! Ich war davon ausgegangen die Referenz würde mit dem Ende der Schleife automatisch aufgehoben.
foreach arbeitet in PHP4 immer mit Kopien der Arrays. Das war mein Basiswissen, sollte es für jedermann sein.
Das Manual gibt explizit an, dass erst seit PHP5 der tatsächliche Arraywert und nicht nur die Kopie bearbeitet werden kann, wenn man eine Referenz einsetzt. Dieser Einschub ist genau eine Textzeile und ein Codebeispiel (inklusive Kommentar, warum nach dem foreach das unset() steht) lang...
... zumindest in der englischen Version. Argl! Die deutsche Version hebt den Block mit dem "Kopie" und "seit PHP5 gehts auch direkt" zwar mit einem längeren Text und einem deutlicheren Rahmen hervor, aber unterschlägt aufs Schändlichste das unset() inklusive Kommentar.
Ist jetzt Bug 46358.
- Sven Rautenberg
"Love your nation - respect the others."