Heim >Backend-Entwicklung >PHP-Tutorial >Was passiert, wenn Referenzvariablen in einer PHP-Foreach-Schleife verwendet werden?

Was passiert, wenn Referenzvariablen in einer PHP-Foreach-Schleife verwendet werden?

Linda Hamilton
Linda HamiltonOriginal
2024-12-13 22:32:14855Durchsuche

What Happens When Using Reference Variables in a PHP Foreach Loop?

Referenzvariable in PHP Foreach

Im angegebenen Code entsteht das Problem durch die Verwendung von Referenzvariablen in der ersten foreach-Schleife. Hier ist eine Erklärung:

$a = ['zero', 'one', 'two', 'three'];

foreach ($a as &$v) {
    // $v is a reference to the current array element
}

foreach ($a as $v) {
    echo $v . PHP_EOL;
}

In PHP können Variablen normale Variablen oder Referenzvariablen sein. Normale Variablen enthalten den Wert der Daten, während Referenzvariablen auf den Speicherort der Daten verweisen.

In der ersten Schleife gilt $v = &$a[0]; Daher wird $v zu einer Referenz auf das erste Element des Arrays, „Null“. Das bedeutet, dass alle Änderungen an $v in $a[0] widergespiegelt werden und umgekehrt.

Jetzt haben wir in der zweiten Schleife $v = 'two'. Da $v eine Referenzvariable ist, ändert diese Operation auch das entsprechende Element im Array, $a[3].

Zuletzt sehen wir in der zweiten foreach-Schleife die Ausgabe, wenn wir über jedes Element iterieren :

  • 'zero' - 'two' (Element 0 ist immer noch 'null', aber $a[3] ist jetzt 'zwei')
  • 'eins' - 'zwei' (Element 1 bleibt 'eins', aber $a[3] ist immer noch 'zwei')
  • 'zwei' - 'zwei' (Element 2 wird auf 'zwei' aktualisiert und $a[3] ist ebenfalls 'zwei')
  • 'zwei' - 'zwei' (Element 3 war bereits 'zwei' und $a[3] bleibt 'zwei')

Dies zeigt die Auswirkung der Verwendung von Referenzvariablen in einer foreach-Schleife, die zur Wiederholung des letzten in der ersten Schleife aktualisierten Werts führt.

Das obige ist der detaillierte Inhalt vonWas passiert, wenn Referenzvariablen in einer PHP-Foreach-Schleife verwendet werden?. 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