2010-12-27 5 views
2

Mögliche Duplizieren:
for vs foreach vs while which is faster for iterating through arrays in phpWelches ist schneller und benötigt weniger Ressourcen in PHP?

For each und while, welche von diesen schneller, empfohlen, und was sind ihre Ressourcennutzungen wie?

+6

Wenn dies ein echtes Problem ist, vermute ich, dass Sie die falsche Sprache und Plattform verwenden. – falstro

+0

@amphetamachine, diese Räder tragen die meisten top top bewerteten Websites, lol :) Das Schlüsselwort hier ist "wahre Sorge". Was Sie wirklich brauchen, ist keine Programmiersprache, sondern ein Programmierer. gefährdete Arten novadays ... –

Antwort

2

foreach ist für die Iteration über Sammlungen optimiert. Das ist eine phantastische Art zu sagen, dass es am besten funktioniert (und am schnellsten), wenn Sie es mit Arrays verwenden (und ab PHP5, Objekte). Sie können while() verwenden, um den gleichen Effekt wie eine foreach zu erhalten, aber es ist nicht so effizient, da Sie list() innerhalb der while Schleife aufrufen müssen.

foreach($array as $key => $value) geschrieben mit einem while ist while(list($key,$value) = each($array)). Sie können die Anzahl der zusätzlichen Anrufe sehen, die benötigt werden.

+0

+1. Der große Nachteil von 'foreach' ist, dass Sie nicht innerhalb der Sammlung navigieren können und Sie nicht wissen, wann Sie das Ende erreicht haben. –

+2

Die 'foreach'-Schleife führt die gleichen Anrufe aus, nur dass sie vor Ihren Augen verborgen ist. Kürzerer Code ist nicht unbedingt schneller (obwohl es in diesem Fall sein könnte). – GolezTrol

+0

@Pekka nicht so groß. Und trotzdem ist die Frage selbst dumm, weißt du. –

1

ich denke, sie sollten die gleiche Geschwindigkeit haben. ich bevorzuge foreach weil es sicherer ist.

1

Das kann davon abhängen, wie Sie sie genau verwenden. Sie können ein Array als Referenz an die Schleife foreach übergeben. In diesem Fall wird keine Kopie des gesamten Arrays erstellt. Optimierungen wie diese haben wahrscheinlich mehr Effekt als die Wahl zwischen foreach und while.

Verwandte Themen