Verstehen Sie PHP foreach wirklich? Sehr klare Anwendungsbeispiele

西门大官人
Freigeben: 2023-04-03 07:14:02
Original
2027 Leute haben es durchsucht

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);
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

Sie können auch die folgende Methode, Methode zwei, verwenden:

foreach($array as &$value){
    $value = $value+1;
}
Nach dem Login kopieren

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;
Nach dem Login kopieren

Beim Drucken von print_r($array) hoffen wir,

Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 [4] => 6 );
Nach dem Login kopieren

auszugeben, aber tatsächlich wird Folgendes ausgegeben:

Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 [4] => 8 ),
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage