Moin!
Kann das mal jemand prüfen? Dem Ergebnis nach ist der Test mit foreach und einem Komplettdurchlauf ca. 3 bis 4 mal schneller als 3 Zugriffe auf das Array mit 4300 Elementen. Ach wenn ich den Wertebereich um den Faktor 100 erhöht (und die "Vorwahl" verlängert) habe war das Ergebnis ähnlich.
<?php
$nummer = "0152991547112342";
$liste = [];
for ($i = 1000 ; $i < 5300; $i++) {
$liste["01" . $i] = "dummy: 01".$i;
}
$ta=0;$fua=0;
$tf=0;$fuf=0;
for ($i=0; $i<1000000; $i++) {
$ende=0;
$start= microtime(1);
$suche=[4,5,6];
foreach ($suche as $l) {
$s=substr($nummer, 0, $l);
#echo "$l | $s | ", @$liste["$s"];
if ( isset($liste["$s"]) ) {
$ende=microtime(1);
$fa="gefunden: ".$liste["$s"];
$fua++;
break;
}
}
$ta = $ta + ($ende - $start);
$start= microtime(1);
$ende=0;
foreach ($suche as $key=>$value) {
if ( 0==strpos($nummer,$key) ) {
$ende=microtime(1);
$ff= "gefunden: ".$liste["$s"];
$fuf++;
break;
}
}
$tf = $tf + ($ende - $start);
}
echo "\n\nForEach-Zugriff: ", $tf*1000, "ms\n$ff\n$fuf\n";
echo "Array-Zugriff : ", $ta*1000, "ms\n$fa\n$fua\n\n";
Jörg Reinholz