Ich hatte es bisher nur gehört, aber nicht geglaubt. Die PHP count Funktion braucht Zeit. Test-Szenario: Nicht durch ein Array durch-iterieren (per foreach copy-Operation der Felder), sondern nur die Größe des Array benutzen.
<?php
define('MAX', 10000) ;
//
$A=array() ;
for ($i=1 ; $i<MAX ; $i++) { $A['string'.$i] = 'val'.$i ; }
//
$b=MAX ; $T=microtime() ;
// Durch-Zählen mit count
for ($i=0 ; $i<count($A) ; $i++) { $b-- ; }
echo "Lauf 1 = " . (microtime()-$T) ." ms\n" ;
//
$b=MAX ; $T=microtime() ;
// Durchzählen mit fester ausgerechneter Variable
for ($i=0 ; $i<$b ; $i++) { $b-- ; }
echo "Lauf 2 = " . (microtime()-$T) ." ms\n" ;
//
$b=MAX ; $T=microtime() ;
// dasselbe aber runterzählen auf 0
for ($i=MAX ; $i ; $i--) { $b-- ; }
echo "Lauf 3 = " . (microtime()-$T) ." ms\n" ;
?>
Ergebnis:
Lauf 1 = 0.002382 ms
Lauf 2 = 0.000343 ms
Lauf 3 = 0.000666 ms
Übrigens bleiben die Verhältnisse gleich, auch wenn man das Array wesentlich vergrößert.
Bei benutzen der count-Funktion in der for-Schleife braucht er etwa 7-mal länger.
Erstaunlich ist aber auch die dritte Schleife, wo eigentlich zu vermuten wäre, dass ein Vergleich auf "$i" (also Not Null) schnelle wäre als ein echter Vergleich zwischen zwei Variablen.
Das Runterzählen braucht 2mal so lange wie das Hochzählen.