Archive for the ‘PHP’ Category

Ich weiß gar nicht so genau, warum mir das erst jetzt aufgefallen ist … wahrscheinlich liegt es daran, dass ich foreach-Schleifen in PHP bisher immer nur zum Auslesen verwendet habe.

Die foreach-Schleife in PHP

1
2
3
foreach ($myArray as $key => $value) {
  // code here
}

referenziert $value nicht, sondern kopiert die Werte. Das bedeutet, dass folgender Code keinen Effekt hat:

1
2
3
foreach ($myArray as $key => $value) {
  $value += "something";
}

Nach dem Schleifendurchlauf sind die Werte des Arrays genau wie vorher.

Seit PHP 5 kann man dieses “Problem” folgendermaßen lösen:

1
2
3
foreach ($myArray as $key => &$value) {
  $value += “something”;
}

Wie in der Doku (php.net) von PHP beschrieben, wird jetzt der Wert durch das &-Zeichen referenziert und nicht mehr kopiert.

Es wird noch darauf hingewiesen, dass man nach dem Schleifendurchlauf mit

1
  unset($value);

die Referenz auflösen sollte, da diese auch nach der Schleife auf das letzte Element des Arrays zeigt.