Heim > Artikel > Backend-Entwicklung > So ändern Sie das ursprüngliche Array in PHP in der foreach-Schleife
In PHP benötigen Sie nur die foreach-Anweisung, um eine Referenzschleife zu verwenden. Wenn Sie dann das ursprüngliche Array im Schleifenkörper bearbeiten (ändern), wirkt sich dies auf die Syntax „foreach ($array as &$value)“ aus. / Loop-Body-Anweisungsblock;}“ oder „foreach ($array as $key => &$value){//Loop-Body-Anweisungsblock;}“.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 8.1, DELL G3-Computer
foreach ist eine Anweisung, die speziell zum Durchlaufen von Arrays entwickelt wurde Eine große Hilfe beim Durchlaufen von Arrays. Nach PHP5 können Sie auch Objekte durchqueren (foreach kann nur auf Arrays und Objekte angewendet werden).
Die foreach-Anweisung durchläuft das Array unabhängig vom Array-Index und kann für diskontinuierliche Index-Arrays und assoziative Arrays mit Zeichenfolgen als Index verwendet werden.
foreach-Anweisung hat zwei Syntaxformate:
Grammatikformat 1:
foreach ($array as $value){ //循环体语句块; }
Durchlaufen Sie das angegebene $array-Array und weisen Sie den Wert des aktuellen Arrays $value in jeder Schleife zu.
Syntaxformat 2:
foreach ($array as $key => $value){ //循环体语句块; }
Durchlaufen Sie das angegebene $array-Array und in jeder Schleife wird der Wert des aktuellen Arrays $value und der Schlüsselname $key zugewiesen.
Erklärung:
Für jede Anweisung bewegt sich der Zeiger innerhalb des Arrays einen Schritt vorwärts, sodass das nächste Array-Element in der nächsten Schleife erhalten wird, bis das Ende des Arrays durchlaufen wird, die Durchquerung stoppt und die Schleife wird beendet.
Ändern Sie das ursprüngliche Array in der foreach-Schleife.
Wenn Sie die foreach-Anweisung zum Durchlaufen des Arrays verwenden, wirkt sie sich im Allgemeinen auf die Sicherung des Arrays aus und hat im Allgemeinen keine Auswirkungen auf das Array selbst.
Zum Beispiel: Ändern Sie das Array innerhalb der Schleife und greifen Sie dann auf das Array außerhalb der Schleife zu. Sie werden feststellen, dass sich das Array nicht geändert hat
<?php header("Content-type:text/html;charset=utf-8"); $array= array(1,2,3,4,5,); echo "原数组:"; var_dump($array); foreach ($array as $value) { $value = $value*2; // 元素值乘以2 } echo "foreach处理后的数组:"; var_dump($array); ?>
Es ist ersichtlich, dass die beiden Ausgaben gleich sind Array-Elemente haben sich zu diesem Zeitpunkt nicht geändert, in der foreach-Schleife sind Änderungen am ursprünglichen Array ungültig.
Aber manchmal ist es notwendig, das Array durch eine foreach-Schleife zu ändern. Was sollen wir tun?
Sie können eine Referenzschleife verwenden (d. h. fügen Sie &
vor $value
hinzu, damit die foreach-Anweisung einen Wert per Referenz zuweist, anstatt einen Wert zu kopieren) , dann im Schleifenkörper Operationen am ursprünglichen Array wirken sich auf das ursprüngliche Array selbst aus. $value
之前加上 &
,这样foreach语句会以引用赋值而不是拷贝一个值),那么在循环体内对原数组进行操作,就会影响原数组本身。
<?php header("Content-type:text/html;charset=utf-8"); $array= array(1,2,3,4,5,); echo "原数组:"; var_dump($array); foreach ($array as &$value) { $value = $value*2; // 元素值乘以2 } echo "foreach处理后的数组:"; var_dump($array); ?>
可以看出:数组元素发生了变化,元素值都乘以了2。
但最后一个元素前,多了一个&
,这又是怎么了?怎么去除?
这因为数组最后一个元素的 $value
引用在 foreach 循环之后仍会保留。我们需要在输出数组前,使用unset() 来将其销毁。
unset($value); // 最后取消掉引用 var_dump($array)
&
rrreee
&
vor dem letzten Element. Was ist los? Wie entferne ich es? 🎜🎜Das liegt daran, dass die $value
-Referenz des letzten Elements des Arrays nach der foreach-Schleife erhalten bleibt. Wir müssen unset() verwenden, um das Array zu zerstören, bevor wir es ausgeben. 🎜rrreee🎜🎜🎜 Die Zeichen &
sind verschwunden! 🎜🎜Empfohlenes Lernen: „🎜PHP-Video-Tutorial🎜“🎜Das obige ist der detaillierte Inhalt vonSo ändern Sie das ursprüngliche Array in PHP in der foreach-Schleife. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!