PHP Programlama Dilinde Diziler

Aşk'a İnanmışt'ı

Genel Yönetici
Staff member
Katılım
28 Mart 2008
Mesajlar
23.243
Tepki puanı
2.147
Puanları
163
Yaş
40
Bulunduğu Yer
ŞANLIURFA
Tuttuğu Takım
GALATASARAY
Diziler derken TV dizileri diye anlayanlarınız varsa hemen terk edin
smile.gif
Elbette bu işin şakası. Eğer basit olarak açıklamam gerekirse dizi değişkenleri dediğimiz değişken tanımlama yapısı işinize oldukça yarayabilir. Bundan önce değişkenler hakkında bilgi sahibi olduğunuzu göz önüne alarak ufak bir örnekle başlayalım.
Kod:
$isimler[1] = "Ali";
$isimler[2] = "Veli";
$isimler[3] = "Deli";

echo $isimler[2];​
Yukarıdaki kodu çalıştırdığımızda "Veli" çıktısını alırız. Bu dizi değişkenlerini her alanda kullanabileceğinizden ötürü bilmenizde fayda var. Daha gelişmiş bir örnek için aşağıdaki kodu inceleyin;
Kod:
$isimler["kiz"][1] = "Selen";
$isimler["kiz"][2] = "Melis";
$isimler["kiz"][3] = "Elmas";
$isimler["erkek"][1] = "Birhan";
$isimler["erkek"][2] = "Kerem";
$isimler["erkek"][3] = "Yunus";
$isimler["erkek"][4] = "Emre";

echo $isimler["kiz"][3];​
Bu kodu çalıştırdığımızda alacağımız çıktı "Elmas" olacaktır. Sanırım bunun sebebini zaten hemen anladınız
wink.gif
Şimdi bu öğrendiklerimizi basit bir array içerisinde kullanalım.
Kod:
$isimler = array(
1 => "Birhan",
2 => "Kerem",
3 => "Yunus",
4 => "Emre",
);

echo $isimler[3];​
Artık tahmin edeceğiniz gibi çıktı olarak "Yunus" değerini verecektir. Merak etmeyin uyuzluk olsun diye değil, array kullanımını göstermek için verdim bu örneği
wink.gif
Şimdi daha karmaşık bir array yapısını inceleyelim.
Kod:
$isimler = array(
"kiz" => array(
1 => "Selen",
2 => "Melis",
3 => "Elmas"
),
"erkek" => array(
1 => "Birhan",
2 => "Kerem",
3 => "Yunus"
)
);

echo $isimler["kiz"][3];​
Yukarıdaki kod karmaşık gelmiş olabilir. Hak veriyorum
smile.gif
Öncelikle $isimler isimli değişkene bir array dizisi tanımladık. İlk array dış kabuk olsun. Bunun içine iki array daha yerleştirdik. İç dizilerdeki birinci dizimiz kız isimlerini sıralamak için kullanıldı. "kiz" dizisi bittiği zaman parantezi kapattıktan sonra virgüllendirdik. Eğer virgüllendirmeseydik hata verirdi. Ardından ikinci iç dizimiz olan ve erkek isimlerini sıraladığımız "erkek" dizisini hazırladık. Bu diziyi de bitirdik fakat bu artık son iç dizimiz olduğu için virgül koymadık. Eğer ardından başka bir benzer yapı gelecek olsaydı yine virgülümüzü koyup ilk dizinin sona erdiğini belirtmek durumunda kalacaktık. Son olarak dış kabuk dediğimiz dış dizimizi kapattık ve noktalı virgül ile $isimler değişkenine tanımladığımız array dizisinin bittiğini belirttik. Ekrana ise kız isimlerinden "3" ile eşleştirilmiş olan "Elmas" ismini ekrana bastırdık.

Dizi yapısını kısmen öğrendik fakat ne işimize yarayacak? Kafanıza takılmıştır elbette. Hemen bir örnekle de ne işe yarayacağını görelim;
Kod:
$gunler = array("Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi");
echo $gunler[date("w")];​
Öncelikle bu kodda size yabancı gelebilecek ibareleri açıklayayım. Görüldüğü gibi date(); fonksiyonunu kullandık. Bu fonksiyon PHP için tarih işlemlerinde kullanılır. İleri de tarih işlemlerini ayrı bir notta ele alacağız. Şimdilik sadece date("w") fonksiyonunun bize o günün hafta içindeki sıra sayısını verdiğini bilmemiz yeterli. "w" ibaresi ile gün sırasını alırız ve bu değer sıfırdan başlar. Bu yüzden karışıklık olmasın diye array dizisinde ilk sıraya "Pazar" değerini girdik. Oysa ki hafta pazartesi ile başlamalıydı. Amacımız sadece karışıklıklığı önlemek oldu. Ayrıca hemen dipnot düşelim ki array dizisinin bu tür kullanımında her içeriğe bir sayı değeri atanır ve bu sayı sıfır sayısından başlar. Yani yukarıdaki $gunler değişkenine tanımladığımız array dizisi için "Pazar" => 0 değerine eşittir. "Pazartesi" => 1 değerine eşittir. Gerisini zaten anlamış olmalısınız
wink.gif


Yukarıdaki örnekte görüldüğü gibi PHP ile ancak ingilizcesini alabileceğimiz gün isimlerini Türkçe`ye çevirdik. Artık sitemizde Türkçe olarak "Pazartesi" yazabileceğiz mesela
wink.gif


Kullanım alanı elbette bununla sınırlı değil, aklınıza bile gelmeyecek yerlerde bu dizi yapısını kullanacaksınız. Ama ben sadece yüzeysel olarak bu kadar açıklayabiliyorum.

Array ile kullanacağımız bir takım sıralama fonksiyonları da vardır. Sıralamalarda Türkçe karakterle başlayan kelimeler tanınmadığı için son kısımda yer alır. bu fonksiyonlar şunlardır;

sort(); - Dizi içeriğini alfabetik sıralama.
rsort(); - Dizi içeriğini ters alfabetik sıralama.
asort(); - Dizi elemanlarını değerine göre sıralar.
arsort(); - Dizi elemanlarını değerine göre tersten sıralar.
ksort(); - Dizi elemanlarını içeriğe göre sıralar.
krsort(); - Dizi elemanlarını içeriğe göre tersten sıralar.

Hemen örneklerle bu fonksiyonları açıklayalım.

Örnek - sort();
Kod:
$seviyeler = array(
"Admin" => "100",
"Yönetici" => "10",
"Üye" => "1"
);
sort($seviyeler);

foreach($seviyeler as $x => $y) {
echo("$x - $y<br>");
}​
Yukarıdaki kodda foreach döngüsünü kullandık. Kodu çalıştırdığımızda $seviyeler değişkenindeki içeriğin alfabetik bir şekilde sıralandığını görürüz. Eğer kullandığımız sort($seviyeler); yapısını rsort($seviyeler); yaparsak göreceğiz ki sıralama tersine dönecektir.

Örnek - asort();
Kod:
$seviyeler = array(
"Admin" => "100",
"Yönetici" => "10",
"Üye" => "1"
);
asort($seviyeler);

foreach($seviyeler as $x => $y) {
echo("$x - $y<br>");
}​
Bu kodu çalıştırdığımızda sonuç aşikardır. "Üye" başta olmak üzere sıralama yapılır. Çünkü "Üye" en düşük değere sahiptir. Değeri 1`dir. Eğer buradaki fonksiyonu arsort($seviyeler); yaparsak sıralamanın tam tersine döneceğini de görmüş oluruz.

Örnek - ksort();

Bu örnek için kod yazma ihtiyacı duymuyorum. Tek yapmanız gereken yukarıdaki örnekteki fonksiyonu ksort($seviyeler); veya tersi için krsort($seviyeler); olarak değiştirmek. Sonuçta göreceksiniz ki bu seferde sıralama, dizi elemanlarının alfabetik sıralaması şeklindedir. ksort(); kullanılırsa "Admin" başta, krsort(); kullanılırsa sonda yer alacaktır.

Oldu ki biz dizimizin içinden rastgele bir değer alıp bunu ekrana basmak istiyoruz. Bu durumda yardımımıza hemen suffle(); koşuyor
wink.gif
Hemen bir örnekle de bunu açıklayalım.
Kod:
$seviyeler = array(
"Admin" => "100",
"Yönetici" => "10",
"Üye" => "1"
);

shuffle($seviyeler);

for ($x=0; $x<1; $x++) {
echo("$seviyeler[$x]<br>");
}​
Bu kodu çalıştırdığımızda ekrana her seferinde başka bir değer gelecektir. Peki biz dizimizdeki elemanların toplam değerini bulmak için ne yapacağız? Burada da devreye array_sum(); fonksiyonu giriyor.

Örnek - array_sum();
Kod:
$sayilar = array(1,2,3,4,5,6,7,8);
echo array_sum($sayilar);​
Bu kodun çıktısı 36 olacaktır. Çünkü 1+2+3+4+5+6+7+8=36 eder. Bu fonksiyonda çeşitli alanlarda işinize elbet yarayacaktır.

Bizim iki adet dizimiz olsun ve bunları birleştirmek istiyor olalım. Ne yapmamız gerek? array_merge(); fonksiyonu bu iş için uygundur. Sadece iki diziyi değil, n sayıdaki diziyi bununla birleştirebilirsiniz. Hemen örneğimizi de verelim;

Örnek - array_merge();
Kod:
$x = array(1,2,3,4,5,6,7,8);
$y = array(4,7,8,3);

$birlestir = array_merge($x, $y);

print_r($birlestir);​
Örneğin en sonunda görüldüğü gibi ekrana yeni dizimizi bastırıyoruz. Eğer print_r yerine print kullansaydık ekranda sadece "Array" yazısını görecektik. Böylece print ve print_r arasındaki farkı da görmüş olduk
wink.gif


Dizilerimizde bazen bir değeri birden çok kullanabiliriz. Eğer ki hangi değerin kaç kez kullanıldığını öğrenmek istersek hemen yardımımıza array_count_values(); koşuyor. Aşağıda ki örneği inceleyin.

Örnek - array_count_values();
Kod:
$x = array(a,b,t,a,y,k,d,w,y,a,g,v,b,e,t);

print_r(array_count_values($x));​
Eğer bu kodu çalıştırırsak bize "Array ( [a] => 3 => 2 [t] => 2 [y] => 2 [k] => 1 [d] => 1 [w] => 1 [g] => 1 [v] => 1 [e] => 1 )" gibi bir çıktı verecektir. Burada da görüldüğü gibi a değerinin üç kez kullanıdığı, b değerinin 2 kez kullanıldığı gibi ifadeler yer almakta. Anladınız zannediyorum
wink.gif
 
Back
Yukarı