Sie sind hier : sebastian1012.bplaced.net/ homepage-neu / kreuz-und-quer / tutorials-info-neuigkeiten-php / zaehlschleife-so-oft-durchfuehren-wie-ein-array-eintraege-hat.php

Zählschleife so oft durchführen, wie ein Array Einträge hat

Schleifen, die ein Array durchlaufen sind sehr häufig. Dazu gibt es entweder die foreach-Schleife oder die for-Schleife mit Zählvariable. Besonders bei letzterer sieht man sowohl in von Hobbyprogrammiern als auch in von professionellen Entwicklern programmiertem Code recht häufig folgenden Schleifenkopf:

$array = array(...); for($i=0;$i<count($array);$i++)> ... }


Das count muss dabei allerdings bei jedem Schleifendurchlauf wieder berechnet werden, damit die Bedingung überprüft werden kann (ob $i<count($array)). Das ist unnötig.
Performanter geht es mittels folgender Funktion:

$array = array(...); $cnt_array = count($array); for($i=0;$i&lt;$cnt_array;$i++) { ... }

Etwa gleichwertig zum Bestimmen der Array-Länge vor der Schleife ist die Funktion foreach:

foreach($array as $item) { ... }

Auswertung:
Die konstanten Variante (Arraylänge vor der Schleife bestimmt) und die foreach-Variante benötigen pro Durchlauf durchschnittlich ca 9 ms und die dynamische (Länge im Schleifenkopf bestimmt) knapp 14 ms. Die konstante Version ist also über 50 % schneller als die dynamische!!!

Datei Gesamtlaufzeit durchschnittliche Laufzeit pro Durchlauf Verhältnis zur schnellsten Variante
loop_constant.php 9,12 s 9,123 ms 100%
loop_foreach.php 9,17 s 9,173 ms 101% (+ 1%)
loop_dynamic.php 13,80 s 13,800 ms 151% (+ 51%)

Wer es selbst nachprüfen möchte: Quellcodes für das Durchlaufen eines Arrays.
Und als Beweis natürlich auch die Benchmark-Ergebnisse

Merke: Konstanten (bzw. Werte, die innerhalb der Schleife nicht verändert werden) nicht in jedem Schleifendurchlauf neu berechnen lassen!!!