In der täglichen Entwicklung ist die Verwendung von PHPs foreach zum Durchlaufen von Arrays fast Standard. Es kann sehr bequem die Schlüssel und Werte des Arrays durchlaufen. Aber verstehen Sie seine Persönlichkeit wirklich?
Wie verwende ich PHP foreach?
Die folgende chinesische PHP-Website erläutert anhand von Beispielen die Verwendung und Vorsichtsmaßnahmen von PHP foreach.
Zum Beispiel: Es gibt das folgende Array:
$array = array(1,2,3,4,5);
Erfordert das Hinzufügen von 1 zum Wert jedes Elements im $array-Array
Normalerweise können wir verwenden die folgende Verarbeitungsmethode, Methode eins:
foreach($array as $key => $value){ $array[$key] = $value+1; }
Sie können auch die folgende Methode, Methode zwei, verwenden:
foreach($array as &$value){ $value = $value+1; }
Unter normalen Umständen verursachen diese beiden Schreibmethoden keine Probleme und die Ergebnisse wird das Gleiche sein. Wenn wir jedoch $value im nächsten Programm verwenden müssen, beispielsweise um $value den neuen Wert 8 zuzuweisen, ändern sich die Ergebnisse von Methode 2 seltsam.
foreach($array as &$value){ $value = $value+1; } $value = 8;
Beim Drucken von print_r($array) hoffen wir,
Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 [4] => 6 );
auszugeben, aber tatsächlich wird Folgendes ausgegeben:
Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 [4] => 8 ),
Mit anderen Worten, das letzte Element wird zu 8 .
Warum passiert das?
Tatsächlich ist $value in Methode 2 eine Referenz und global. Wenn foreach ausgeführt wird, ist die Referenz auf $value immer noch gültig, was zu jeder Referenz auf $value außerhalb führt foreach Änderungen wirken sich auf das letzte Element im $array aus.
Wie kann man dieses Problem lösen?
Die Methode ist sehr einfach. Da $value außerhalb von foreach immer noch gültig ist, können wir $value nach Abschluss der foreach-Ausführung zurücksetzen. Der verbesserte Code lautet wie folgt:
foreach($array as &$value){ $value = $value+1; } Unset($value); $value = 8;
Jetzt gibt das Programm das letzte Element von $array als 6 aus, das von der $value-Änderung nicht mehr betroffen ist.
Das obige ist der detaillierte Inhalt vonVerstehen Sie PHP foreach wirklich? Sehr klare Anwendungsbeispiele. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!