Sayfalar

Dongü ve Diziler - 4


Diziler

Yazinin bu ilk paragrafini biraz dikkatli okumanizi tavsiye ederim.Yazinin tum anafikri bu ilk paragrafta yer aliyor

Diziler,bir tane degisken ismi altinda verilerin index mantigi kullanilarak saklanmasidir.Dizi'nin her uyesi bir element olarak tanimlanir.Dizileri de ayni degiskenlerde oldugu gibi yaratiyoruz.Bir degiskeni "dizi" seklinde kullanacagimiz zaman sadece koseli parentezleri [] eklememiz ve gerisini PHP ye birakmamiz yeterlidir.

Ornek vermek istersek,

$Eyaletler[1] = "Washington";
$Eyaletler[2] = "Florida";

Dizi icerisinde yer alan elemanlara istediginiz numarayi verebilirsiniz.

$Eyaletler[39] = "Washington";
$Eyaletler[12] = "Alaska";

Dizileri bu sekilde "numara" vererek "indexlemek" yerine karekter gruplarida kullanabiliriz.

$Eyaletler["fl"] = "Florida";
$Eyaletler["il"] = "Ilinois";

Eger bu sekilde karekterler kullanarak dizinizi indexliyorsaniz dizinin icersinde saklanan veriye ulasmak icin cift tirnak isaretlerini kullanmayabilirsiniz,

echo $Eyaletler["fl"] = "Florida";

veya

echo $Eyaletler[fl] = "Florida";

ayni seylerdir ve her ikiside problemsiz calisacaktir.

PHP'nin en guzel yanlarindan bir taneside degisik tipteki verilerin bir dizide ortak olarak kullanilabilmesidir.

$Sayi[1] = 12;
$Sayi[2] = "Oniki";
$Sayi[3] = $Degisken;
$Sayi["fl"] = $Degisken;

Ancak bu gibi kullanimlarda diziye ayrilacak hafiza buyuklugunun ne olmasi gereketigi gibi sorular nedeniyle PHP biraz yavas calisabilir!!!

Dizilerin Baslatilmasi ve Kullanilmasi

Bir diziyi baslatmak icin adini yazip koseli parentezleri eklemek yeterlidir.Indexleme problemleri gibi konularla bizim ilgilenmemize gerek yoktur.PHP tum bu islemleri otomatik olarak bizim icin yapacaktir.Yanlizca dizinin ilk ogesini yaratin arkasindan ikinciyi arkasindan ucuncuyu...bu sekilde dizinin butun ogelerini yaratabilirsiniz,

$Yazar[] = "Serkan Hadi Ceylani";
$Yazar[] = "Fatih Terim";

Koseli parentezler olmadan PHP ,ilk satirda degiskene verdigiiz degeri ikinci satirda bir sonraki deger ile degistirecektir.Bu koseli parentezler sayesinde degerlerimizi bir dizi icerisinde saklmak istedigimizi PHP'ye anlatmis oluyoruz.

Eger indexlemeyi PHP ye birakiyorsak dizinin ilk ogesi ,

$Yazar[0] = "Serkan Hadi Ceylani";

ikinci ogesi,

$Yazar[1] = "Fatih Terim";

olacak sekilde "sifirdan" baslayarak dizinin tum ogelerine birer numara atanir.PHP icerisinde diger programlama dillerinden farkli olarak,dizinin icinde saklayacagimiz veri tipini onceden bildirmemize gerek yoktur.Dizinin icerisinde yer alan elemanlarda text veya numara olarak veri saklanabilir.Yine degiskenlerde oldugu gibi PHP otomatik olarak onlarin veri tipine karar verecektir.Ikinci onemli kolaylik diziyi yaratamadan once ne kadar buyuklukte olacagina karar verme zorunlulugu olmamasi.Diger programlama dillerinde bu iki sart dizilerle ilgili bircok kisitlamayi beraberinde getiriyor.

Php icerisinde dizilere veri girisi icin iki yol bulunmaktadir.

Birincisini zaten yukarida ayrintili olarak acikladik teker teker butun dizinin elemanlarini girmek veya array () komutunu kullanmak.Simdi bu komutun kullanimina bir ornek verelim,

$Yazar = array ("Serkan Hadi Ceylani","Fatih Terim");

Tekrar ediyorum yukaridaki ornek te biz PHP'ye diziyi otomatik olarak indexlemesi icin ozgur biraktik.Index degerleri "sifirdan" baslayarak artan numaralar seklindedir.Eger "echo" komutuyla $Yazar[1] degiskeni icerisinde saklanan degeri gormek isteseydik ekranda "Fatih Terim" yazdigini gorecektik.

Dizilerin boyutunda herhangi bir sinirlama yoktur.Dolayisi ile soyle bir kod yazabiliriz,

$Eyaletler = array ("Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming");

Bizler yukarida dizinin butun ogelerini PHP'nin otomatik olarak indexlemesini sagladik.Boyle bir kodu yazdigimiz zaman PHP dizinin ilk ogesini (Alabama Eyaleti) "0" degeri ile indexler.
Amerika Birlesik Devletleri'nde toplam 50 eyalet vardir.Gordugunuz gibi son eyalaet boyle bir dizide "49" degeri ile indexlenecektir.Cunku ilk degerimiz icin index degeri "0"dir. Bu durumda dizinin belirli bir sayidan baslanarak otomatik olarak indexlenmesini istiyorsaniz,

$Eyaletler = array (1 => "Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming");

yukarida goruldgu sekilde "=>" operatorunu kullanmalisiniz.Ardindan gelen sayi dizimizin indexlenmeye baslanacagi degerdir.Ben diziyi 1 den baslayarak indexlemek istedim cunku tum bu elemanlarin ekranda bir dokumunu almak istedigim zaman artik biliyorum ki 1.eyalet Alabama ve 50.Eyalet Wyoming olacaktir.

Eger cok uzun diziler kullaniyorsaniz tabii ki dizinin her ogesi icin bir index degeri belirleyebilirsiniz.

$Eyaletler = array ("al" => "Alabama","ak" => "Alaska","az" => "Arizona","ar" => "Arkansas","ca" => "California","co" => "Colorado", "ct" => "Connecticut", "de" =>"Delaware","fl" => "Florida","ga" => "Georgia", "hi" =>"Hawaii", "id" =>"Idaho","il" => "Illinois", "in" =>"Indiana", "ia" =>"Iowa", "ks" =>"Kansas", "ky" =>"Kentucky", "la" =>"Louisiana", "me" =>"Maine","md" => "Maryland","ma" => "Massachusetts","mi" => "Michigan", "mn" =>"Minnesota", "ms" =>"Mississippi","mo" => "Missouri", "mt" =>"Montana", "ne" =>"Nebraska","nv" => "Nevada", "nh" =>"New Hampshire", "nj" =>"New Jersey","nm" => "New Mexico","ny" => "New York","nc" => "North Carolina","nd" => "North Dakota","oh" => "Ohio", "ok" =>"Oklahoma","or" => "Oregon", "pa" =>"Pennsylvania","ri" => "Rhode Island", "sc" =>"South Carolina","sd" => "South Dakota","tn" => "Tennessee","tx" => "Texas", "ut" =>"Utah","vt" => "Vermont","va" => "Virginia","wa" => "Washington","wv" => "West Virginia", "wi" =>"Wisconsin","wy" => "Wyoming");

yavas fakat isinizi orecek bir cozum.

Dizi Boyunca Iterasyon (Iterating Through an Array )

Diziyi bir kere yarattiktan sonra her seferinde geriye donup teker teker onlari cagirmaya gerek yoktur.Bu bize extra bir suru is yuku getirecektir.Iste bu noktada bir konu once ogrendigimiz donguler devreye girecektir.Eger yukarida yaratilan "eyaletler" dizisinin butun elemanlarini web sayfasinda goruntulemek isteseydik uc satirlik kod ile bu isi cozumlemis olacaktik.

for ($sayac=1;$sayac<51;$sayac++) {
echo "<BR>$Eyaletler[$sayac]";
}

dongumuz 1 den baslayarak 50 ye kadar sayacak ve her donusunde amerikanin bir eyaletini ekrana yazacaktir.

Not : "<BR>" bir HTML tagidir ve her seferinde yeni bir satir yaratmak amaciyla kullanilmistir.

Dongunun calismasini acik sekilde yazacak olursak,

echo "<BR>$Eyaletler[1]";
echo "<BR>$Eyaletler[2]";
echo "<BR>$Eyaletler[3]";
echo "<BR>$Eyaletler[4]";
......
.......

Ayni amaca ulasmak icin "while" dongusunu kullanmak isteseydik bir kac satir fazla kod yazacaktik,

$sayac=1;
while ($sayac<51) {
echo "<BR>$Eyaletler[$sayac]";
$sayac=$sayac+1;
}

Simdi de bir uygulama yazalim.

1.Text editorunuzu acin ve asagidakileri yazin.
<HTML>
<HEAD></HEAD>
<BODY>
<FORM ACTION="baskentler.php" METHOD=POST>
Hangi eyaletin baskentini ogrenmek istiyorsunuz?
<SELECT NAME=Eyalet>
<?php

$Eyaletler = array (1 => "Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming");

for ($sayac=1;$sayac<51;$sayac++) {
echo "<OPTION>$Eyaletler[$sayac]</OPTION>";
}
echo "</SELECT><BR><BR>";
for ($sayac=1;$sayac<51;$sayac++) {
echo "<INPUT TYPE = HIDDEN NAME='GizliEyalet[]' VALUE = '$Eyaletler[$sayac]'>";
}
echo "<INPUT TYPE=SUBMIT></FORM>";
?>
</BODY>
</HTML>

2.Bu dosyayi "eyaletler.php" olarak kayi edin.

3.Yeni bir text dosyasi acip asagidakileri yazin.

<HTML>
<HEAD></HEAD>
<BODY>
<?php
$EyaletBaskenti = array (0 => "Montgomery", "Juneau", "Phoenix", "Little Rock", "Sacramento","Denver","Hartford", "Dover","Tallahasse", "Atlanta", "Honolulu", "Boise", "Springfield","Indianapolis", "Des Moines", "Topeka", "Frankfort", "Baton Rouge","Augusta","Annapolis","Boston", "Lansing", "Saint Paul","Jackson", "Jefferson City", "Helena","Lincoln", "Carson City","Concord", "Trenton","Santa Fe", "Albany", "Raleigh","Bismarck","Columbus","Oklahoma City", "Salem", "Harrisburg", "Providence", "Columbia","Pierre", "Nashville", "Austin","Salt Lake City", "Montpelier","Richmond","Olympia","Charleston", "Madison","Cheyenne");

for ($sayac=0;$sayac<50;$sayac++) {

if ($GizliEyalet[$sayac] == $Eyalet)
{
echo "Sectiginiz eyaletin baskenti $EyaletBaskenti[$sayac]";
}

}

?>
</BODY>
</HTML>

4.Bu dosyayi "baskentler.php" olarak kaydedin.

5."eyaletler.php" dosyaysini acip bir deneme yapin.