Fabian St.: Kopie vom Array bei foreach

Beitrag lesen

Hi!

Ich bin noch PHP-Anfänger und habe rumprogrammiert und wollte innerhalb einer foreach-Schleife das Array verändern. Dann kam nicht das bei raus, was ich wollte. Ich hab also ungefähr 4 Stunden rumgesucht und dacht gar nicht daran, das ich foreach falsch benutzt habe. Nach den besagten 4 Stunden bin ich dann doch zufällig an die Info gestoßen, das foreach ne Kopie macht. Also hab ich foreach gegen list und each ersetzt und es funktioniert.

Das geht mit foreach() auch, jedoch erst ab Version 5.X (siehe auch http://de.php.net/foreach, insbesondere Kommentare):

  
  
foreach($array as &$key) {  // Hier wird $key durch das & zu einer Referenz  
    $key['foobar'] = 1234;  
}  
  

Jetzt zu meiner Frage: Wißt ihr, was der Grund ist, das überhaupt eine Kopie angelegt wird? Also was die Entwickler dazu veranlasst hat mich so zu quälen ;)

Schaue dir dazu am besten den entsprechenden Eintrag im Manual an.

Grüße,
Fabian St.

--
---------------------
fabi@erde ~# whatis spam
spam: nothing appropriate
---------------------
Selfcode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:( ss:) de:> js:| ch:? mo:) zu:)