Giris :
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.
Ornek Dosyalar
http://www.turk-php.com/ornekler/eyaletler.php
http://www.turk-php.com/ornekler/baskentler.php
|