PHP Pass by Reference in foreach
Grundlegendes zum Pass by Reference
PHP hat zwei Variablen Typen: normale Variablen und Referenzvariablen. Durch Zuweisen einer Referenz einer Variablen zu einer anderen Variablen wird eine Referenzvariable erstellt. Die Variable wird zu einem Alias für die referenzierte Variable.
Übergabe als Referenz in Foreach-Schleifen
In einer foreach-Schleife gilt die Syntax foreach ($a as &$v) übergibt einen Verweis auf jedes Array-Element an die Variable $v. Das bedeutet, dass alle innerhalb der Schleife an $v vorgenommenen Änderungen auch das ursprüngliche Array-Element ändern.
Erklärung des Codeausschnitts
$a = array ('zero','one','two', 'three'); foreach ($a as &$v) { } foreach ($a as $v) { echo $v.PHP_EOL; }
In diesem Code:
zero one two two
Grund für die Ausgabe
Nach der ersten foreach-Schleife wird das Element $ a[3] wird zu einer Referenzvariablen, da sie von $v referenziert wird. Wenn $v in den nachfolgenden Iterationen ein neuer Wert zugewiesen wird, wird daher auch $a[3] geändert.
Da $a[3] jetzt eine Referenzvariable ist, ändert sich ihr Wert in der zweiten foreach-Schleife wirkt sich auf alle anderen Iterationen der Schleife aus. Daher gibt die letzte Iteration „zwei“ statt „drei“ aus.
Das obige ist der detaillierte Inhalt vonWie wirkt sich die Referenzübergabe von PHP in „foreach'-Schleifen auf die Änderung von Array-Elementen aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!