Der Grund für das Schreiben dieses Artikels liegt hauptsächlich darin, dass ich während des Entwicklungsprozesses plötzlich die folgenden Fragen hatte und mir die Zeit nahm, sie eingehend zu untersuchen, um mein Verständnis von PHP zu vertiefen.
1. Als PHP-Programm werden For- und Foreach-Schleifendurchläufe fast täglich verwendet. Welche dieser beiden Durchlaufmethoden ist also effizienter?
2. Was ist der Grund für hohe Effizienz?
3. Was sind die Grundsätze?
Zunächst müssen wir das erste Problem lösen. Wir können uns die Testergebnisse durch einen einfachen Test ansehen. Der Testcode lautet wie folgt:
for-Schleife Durchlaufmethode:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Foreach-Schleifendurchlaufmethode:
1 2 3 4 5 6 7 8 9 10 11 |
|
Zeitberechnungsmethode:
1 2 3 4 5 6 7 8 |
|
Sehen Sie sich den Zeitverbrauch der beiden an Methoden
1 2 3 4 5 6 |
|
Aus dem oben Gesagten können wir eindeutig zwei Schlussfolgerungen aus dem Test ziehen:
1 2 |
|
Also die zweite Frage: Was ist der Grund für die hohe Effizienz? Bevor wir nach dieser Antwort suchen, besprechen wir zunächst die dritte Frage. Werfen wir einen Blick auf die Prinzipien.
for-Schleife:
Jedes Mal, wenn sie bei $i beginnt, muss jede Schleife bestimmen, ob $i kleiner als count ist, was viel Zeit in Anspruch nimmt
Weniger als fortfahren, sonst Schleife beenden
foreach:
1 2 3 4 5 |
|
ABER: Ist das wirklich so? Manche Leute würden sagen, dass dieses Beispiel bereits offensichtlich ist und die Schlussfolgerung auf den ersten Blick klar ist. Gibt es andere Möglichkeiten?
Ich denke, die Wahrheit ist nicht so einfach. Wenn das wirklich der Fall ist, was bedeutet die for-Schleife?
Wäre es nicht ausreichend, nur foreach zu verwenden, da foreach um ein Vielfaches effizienter ist als for? Persönlich bin ich der Meinung, dass das von mir getestete Beispiel gewisse Einschränkungen aufweist und nicht als absolute Grundlage für die Bewertung der Effizienz der beiden Schleifenmethoden verwendet werden kann.
Für unsere PHPer ist es jedoch besser, bei der normalen Arbeit die Foreach-Schleifendurchquerung zu verwenden. Wenn Sie interessiert sind, können Sie dies nicht tun Studieren Sie es gründlich.
Das Folgende ist die Antwort von Internetnutzern:
Die Bedeutung von for existiert, weil es einige Situationen gibt, in denen foreach schwierig zu implementieren ist. Weitere Informationen finden Sie im Artikel 46 von Effective Java Obwohl Sie PHP verwenden, sind sie im Grunde gleich! Das Buch empfiehlt die Verwendung des foreach-Modus, aber es gibt drei Situationen, in denen er ungeeignet ist: 1. Filtern – Wenn Sie die Sammlung durchlaufen und ausgewählte Elemente entfernen müssen, müssen Sie eine explizite Iteration verwenden und deren Methode zum Entfernen aufrufen. 2. Konvertierung – Wenn Sie eine Liste oder ein Array durchlaufen und einige oder alle Elementwerte ersetzen müssen, benötigen Sie einen Iterator der Liste oder einen Index des Arrays, um diese Werte festzulegen. 3. Parallele Iteration – Wenn Sie mehrere Sammlungen parallel durchlaufen müssen, müssen Sie den Iterator oder die Indexvariable explizit steuern, damit alle Iteratoren oder Indizes gemeinsam vorrücken können. Dann scheinen for und foreach unterschiedliche Daten zu durchlaufen Es gibt verschiedene Leistungsunterschiede, wie z. B. verknüpfte Listen oder Arrays. Darüber habe ich mich in letzter Zeit gewundert.
Verwandte Empfehlungen: „PHP-Tutorial“
Das obige ist der detaillierte Inhalt vonWas ist effizienter, for oder foreach? Warum?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!