foreach ile dizinin
her bir elemanini islemek :
<?php
foreach ($dizi as $anahtar => $deger) {
//..$anahtar ve $deger degiskenlerini dongu icerisinde istediginiz
gibi kullanin.Bu degiskenler icinde dizinin
//her bir elemani icin anahtar ve tasidigi deger saklanacaktir...
}
?>
Karsilastirma Testleri :
<?php
function microzamani_hesapla ()
{
$m_zaman = microtime();
$m_zaman = explode (" ",$m_zaman);
$m_zaman = doubleval ($m_zaman[1]) + doubleval ($m_zaman[0]);
return ($m_zaman);
}
for ($i = 0, $j = 1500; $i <1500; $i++,$j--) {
$dizi[$j] = $i;
}
$zaman1 = microzamani_hesapla ();
while (list ($anahtar, $deger) = each ($dizi)) {
$t = $anahtar;
$z = $deger;
}
$zaman2 = microzamani_hesapla ();
$toplam = abs ($zaman2 - $zaman1);
print "while dongusunun tamamlanmasi icin gecen sure : $toplam
n<BR>";
//Hafizayi temizleyelim ve dizimizin elemanlarini birde
foreach ile dizinin her bir elemanini isleyelim...
unset ($zaman1, $zaman2, $toplam, $t, $z, $anahtar, $deger);
$zaman1 = microzamani_hesapla ();
foreach ($dizi as $anahtar => $deger) {
$t = $anahtar;
$z = $deger;
}
$zaman2 = microzamani_hesapla ();
$toplam = abs ($zaman2 - $zaman1);
print "foreach dongusunun tamamlanmasi icin gecen sure :
$toplam n<BR>";
?>
Ek bilgi
abs : Mutlak degerini almak icin kullanilan php nin hazir
fonksiyonu.Daha fazla bilgi icin matematik manual linkine
tiklayiniz...
Bakalim hangisi daha hizli calisacak :)
Konu disi aciklama ve ek bilgi :
while dongusu ile bir dizi icerisindeki elementleri birer
birer islemeyi bilmediginizi dusunerek bir ornek vermeyi
uygun buldum.Bu ornegimizde size cok basit olarak bir dizinin
elemanlarinin bu donguye sokularak ekrana (anahtar =>
deger) ciftleri seklinde nasil yazdirilacagini gosterecem:
Bunun icin PHP'nin $GLOBALS dizisini kullanalim.Hem de anlatimda
sadelik yakalamis oluruz.Kendimizde bir dizi yaratbilir
ve onu kullanabilirdik ama gerek yok zaten boyle hazir bir
dizi elimizin altinda :)
Bu dizi($GLOBALS) PHP tarafindan otomatik olarak yaratilan
ve programlar icin hali hazirda bekleyen cevre degiskenlerinin
icinde tutuldugu dizidir.
PHP'nin uzerinde calistigi isletim sisteminin tipi,surumu
gibi cevresel degerleri PHP bu dizide saklar.Programci bunlara
erismek istediginde:
$GLOBALS[] ve koseli parentezlerin arasina istenilen index
degerini yazmasi yeterlidir.
Ornek olarak o anda siteye baglanan kullanicinin IP'si programlarinizda
kullanilmak uzere :
$IP_Adresi = $GLOBALS[REMOTE_ADDR];
seklinde $GLOBALS dizisinin REMOTE_ADDR ile indexlenmis
elementi kullanilarak elde edilebilir.
Simdi bu diziyi while dongusu ile kullanip icerigini ekranda
gorunteleyelim:
<?php
reset($GLOBALS);
while (list($anahtar, $deger) = each($GLOBALS)) {
print "$anahtar => $deger \n<BR>\n";
}
?>
Ornek Dosya
http://www.turk-php.com/ornekler/globals.php
http://www.turk-php.com/ornekler/globals.phps
Saglicakla kalin,
Serkan Hadi Ceylani
serkan@turk-php.com