Odnośnie prędkości:
Mamy taką tablicę:
for ($a=0;$a<1000;$a+=2) $arr[$a]=$a;
I teraz następujące przypadki:
1. Czas wykonywania ok 0,9 sek.
for ($a=0;$a<1000;$a++)
for ($b=0;$b<1000;$b++) {
if (isset($arr[$a]) && isset($arr[$b])) $x=$arr[$a]+$arr[$b]; }
2. Czas wykonywania ok 3,25 sek. (ten sam przypadek ale z wyłączonym raportowaniem błędów i bez małpki wykonuje się w ok 2,3 sek.)
for ($a=0;$a<1000;$a++)
for ($b=0;$b<1000;$b++) {
@$x=$arr[$a]+$arr[$b];
}
3. Czas wykonywania ok 0,73 sek.
for ($a=0;$a<1000;$a++)
for ($b=0;$b<1000;$b++) {
$x=$a+$b;
}
4. Czas wykonywania ok 1,48 sek.
for ($a=0;$a<1000;$a++)
for ($b=0;$b<1000;$b++) {
@$x=$a+$b;
}
Co prawda wyniki są uzyskane na dosyć słabym procesorze, ale chodziło mi tylko o pokazanie różnicy.
Jeszcze tylko dodam, że przy zapełnieniu całej tabeli czas wykonywania tych pętli to ok 0,95 sek. bez sprawdzania. Ze sprawdzaniem (isset()) 1,25 sek.