Arkasokak Logo





Forum Arkasokak > HAYATIN İÇİNDEN > İnternet Teknoloji Tasarım » PHP Programlama Dilinde Diziler (Array)
by PaRaDoKs 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] ...

Cevap
  #1  
Eski 16-08-2006, 10:19 PM
PaRaDoKs kullanıcısının avatarı
When You're Gone...
Arkasokaklı
 
Konum: aNkArA
Mesaj: 632
PaRaDoKs kullanıcısına MSN aracılığı ile mesaj yolla
PHP Programlama Dilinde Diziler (Array)

by PaRaDoKs

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 Ş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 Ş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 Ö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

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

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 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

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));


[b]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
Array fonksiyonu için yazılabilecek birkaç fonksiyon daha var ama şimdilik bu kadar yeterli diye düşünüyorum. İleride lazım olursa onları da yazarım.

Alıntı Yaparak Cevapla
Cevap

Konu Araçları
Görünüm Modları



Saat 06:52 AM.


Copyright ©2005 - 2008 Arkasokak.Net
Tasarım: NoDRaC
Bize Ulaşın - Gizlilik İlkesi - En Üst
Powered by vBulletin
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0