Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung des Unterschieds zwischen for- und foreach-Traversierungsarrays in PHP

Detaillierte Erklärung des Unterschieds zwischen for- und foreach-Traversierungsarrays in PHP

黄舟
黄舟Original
2017-09-07 09:09:061505Durchsuche

Das Durchlaufen eines Arrays ist die häufigste Sache in der Programmierung. Hier besprechen wir die Methoden for und foreach:

Zuerst bereiten wir zwei Arrays für das Durchlaufen vor:

$arr1=array(1=>'a', 3=>22, 5=>'b', 4=>'c', 8=>'d');
$arr2=array('a'=>'aaa', 'b'=>'bbb', 'c'=>'ccc', 'd'=>'ddd', 'e'=>'eee');

1: for Schleifenstruktur

Schleife 1:

for($i=0,$num=count($arr1);$i<$num;$i++){
    echo $arr1[$i].&#39; &#39;;
}

Ausgabeergebnis: a 22 c

Schleife 2:

for($i=0,$num=count($arr2);$i<$num;$i++){
    echo $arr2[$i].&#39; &#39;;
}

Diese Anweisung hat keine Ausgabe

Analyse:

Schleife 1 gibt nur die ersten beiden Einheiten des Arrays $arr1 aus, während $arr2 in Schleife 2 nichts ausgibt.

Der Grund dafür ist, dass die for-Schleife um Zahlen erhöht wird, sodass for nur auf das Index-Array zugreifen kann. Beispielsweise greift Schleife 1 inkrementell auf das Array $arr1 von $i=0 bis $i=4 zu Die Schlüssel im Array $arr1 umfassen 0 bis 4 Zellen, aber die Schlüssel im Array sind: 1,3,5,4,8. Auf Array-Einheiten mit Schlüsselwerten über 4 (5=>'b',8=>'d') wird nicht zugegriffen, da count($arr1)=5, also $i<5; Nur Ergebnis: a 22 c; für alle Schlüssel in $arr2 sind Zeichen, keine Zahlen, daher erfolgt keine Ausgabe in Schleife 2.

2: foreach-Schleifenstruktur

Schleife 3:

foreach($arr1 as $key=>$value){
    echo $key.&#39;=>&#39;.$value.&#39; &#39;;
}

Ausgabeergebnis:

1=>a 3=>22 5=>b 4=>c 8=>d

Schleife 4:

foreach($arr2 as $key=>$value){
    echo $key.&#39;=>&#39;.$value.&#39; &#39;;
}

Ausgabeergebnis:

a=>aaa b=>bbb c=>ccc d=>ddd e=>eee

Analyse:

Die foreach-Schleifenstruktur führt eine Schleife entsprechend dem Zeiger im Array aus. Wenn foreach mit der Ausführung beginnt, zeigt der Zeiger im Array automatisch auf den Zeiger innerhalb des Arrays. Daher wird die nächste Einheit in der nächsten Schleife abgerufen und es ist nicht erforderlich, das gesamte Array gemäß dem Array-Schlüssel zu durchlaufen. Dies ist auch der Unterschied zwischen foreach und for. Natürlich kann foreach nur mit Arrays und Objekten verwendet werden, und da foreach auf einem internen Array-Zeiger basiert, führt die Änderung seines Werts in einer Schleife wahrscheinlich zu unerwartetem Verhalten.

Hinweis: Jede for-Schleife bearbeitet den Wert unter dem entsprechenden Index, und Änderungen an jedem Wert werden auch im durchlaufenen Objekt widergespiegelt. Jedes Mal, wenn foreach eine Einheit betreibt, übernimmt es deren Index und Wert in Variablen oder entnimmt den Wert nur in eine Variable und verarbeitet die Variablen dann separat mit dem Index und dem Wert, ohne das durchquerte Objekt selbst zu beeinflussen. Wenn Sie den Wert im Objekt während des Durchlaufvorgangs ändern möchten, müssen Sie vor der Variablen in der Deklaration ein &-Symbol hinzufügen. Zum Beispiel: foreach($array as &$value).

Fazit: Wenn ein Array fortlaufende Zahlen als Schlüssel der Array-Einheiten verwendet, kann eine for-Schleifenstruktur verwendet werden. Wenn Sie nicht sicher sind, ob die Schlüssel des Arrays oder die Schlüssel des Arrays Zeichen enthalten, sollten Sie die foreach-Schleifenstruktur verwenden.

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des Unterschieds zwischen for- und foreach-Traversierungsarrays in PHP. 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