1, foreach ist PHPs -Schleife-Ausgabe für array.
Beispiel:
$arr = array("1"=>"111","2"=>"222","3"=>"333"); foreach($arr as $key=>$value) { echo $key."=>".$value."\n"; }
Das Ergebnis ist wie folgt:
1=>111 2=>222 3=>333
2, leicht modifiziert:
foreach($arr as $key=>$value) { //echo $key."=>".$value."\n"; $key = &$arr[$key]; } print_r($arr);
Das Ergebnis ist wie folgt folgt:
Array ( [1] => 2 [2] => 3 [3] => 333 )
Code-Erklärung:
Wir haben festgestellt, dass das ursprüngliche Array geändert wurde. Lass es uns studieren.
Der Schlüsselteil im Code ist: $key = &$arr[$key];
$key ist die Referenz von $arr[$key], Das heißt, wenn $key geändert wird, wird auch $arr[$key] auf den entsprechenden Wert geändert.
Zuerst müssen wir das Prinzip von foreach verstehen, das die Werte des Arrays jeweils $key und $value zuweist;
Also, $key und $value sind auch gewöhnliche Variable.
Als nächstes bedeutet $key = &$arr[$key]; &$arr[1] zeigt auf die Variable $key.
Wenn die foreach-Schleife den zweiten Durchgang erreicht, wird $key zunächst der Wert 2 zugewiesen. Achten Sie zu diesem Zeitpunkt erneut darauf, $key = &$arr[$key];
Das Ergebnis ist: $arr[1] wird zu diesem Zeitpunkt der neue $key zugewiesen, der 2 ist.
Nach der zweiten Schleife wird das ursprüngliche Array zu:
Array ( [1] => 2 [2] => 222 [3] => 333 )
Das Gleiche as Logischerweise wird es nach dem Ende des dritten Zyklus sein:
Array ( [1] => 2 [2] => 3 [3] => 333 )
An dieser Stelle wurde es grob erklärt.
3. Um den Zuweisungsprozess in foreach besser zu verstehen, können wir Folgendes tun:
$arr = array("1"=>"111","2"=>"222","3"=>"333"); foreach($arr as $key=>$value) { $key = &$arr[$key]; $key = "hello"; unset($key); print_r($arr); }
Das Ergebnis ist wie folgt:
Array ( [1] => hello [2] => 222 [3] => 333 ) Array ( [1] => hello [2] => hello [3] => 333 ) Array ( [1] => hello [2] => hello [3] => hello )
Code-Erklärung:
Wir weisen den Wert von $key in jeder Schleife direkt „Hallo“ zu, um ihn nicht zu beeinflussen, und geben dann die Variable $key frei.
Das sollte es klarer machen.
Das obige ist der detaillierte Inhalt vonAnalyse von Problemen, die sich aus der Foreach-Referenz in PHP ergeben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!