Heim  >  Artikel  >  Backend-Entwicklung  >  PHP hinterlässt nach der foreach-Schleife ein Array-Referenzproblem

PHP hinterlässt nach der foreach-Schleife ein Array-Referenzproblem

不言
不言Original
2018-04-13 14:23:532194Durchsuche

Der Inhalt dieses Artikels befasst sich mit dem Referenzproblem des von PHP nach der foreach-Schleife hinterlassenen Arrays. Jetzt können Freunde in Not einen Blick darauf werfen



Ergebnis:


Erklärung:

1.foreach Es handelt sich nicht um ein Feld auf Blockebene, die Array-Referenz endet, $k, $a gibt den Speicher nicht frei

2 Wenn der erste Referenzzyklus endet, zeigt $a auf das letzte Element des Arrays 4

3 .Wenn die Schleife zum zweiten Mal startet ($a zeigt bereits auf das letzte Element und ist eine Referenz)

wird viermal wiederholt. Die Änderungen im Array sind :

1->

[1

,2,3,4]2-> ]

3-> [1, 2,3,

3

] Der dritte Zeitwert zeigt auf das letzte Element 3. Wert ist jedoch eine globale Referenz, die darauf verweist zum letzten Element im letzten Zyklus, also wird bei Wert=3 auch der Wert des letzten Elements auf 34-> geändert

Hinweise:

1 Das Implementierungsprinzip von foreach hat das Konzept der internen Zeiger


2 . Wenn die foreach-Schleife endet, zeigt der Zeiger auf das letzte Element

So vermeiden Sie:

unset ($a) nach Verwendung der &foreach-Schleife


Verwandte Empfehlungen:

Adresse per Foreach-Referenz in PHP übergeben

Ausnahmebehandlung nach Foreach-Verwendung und Referenz in PHP

Analyse zwischen foreach und normal für die Schleifeneffizienz

Das obige ist der detaillierte Inhalt vonPHP hinterlässt nach der foreach-Schleife ein Array-Referenzproblem. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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