1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

PHP Programlama Dilinde Diziler

Konusu 'Web Tasarım Dersleri' forumundadır ve Aşk'a İnanmışt'ı tarafından 6 Mart 2013 başlatılmıştır.

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

    Aşk'a İnanmışt'ı Genel Yönetici Staff Member

    Katılım:
    28 Mart 2008
    Mesajlar:
    23.233
    Beğenilen Mesajları:
    2.144
    Bulunduğu Yer:
    ŞANLIURFA
    Tuttuğu Takım:
    GALATASARAY
    Skype:
    fehmi56397
    Diziler derken TV dizileri diye anlayanlarınız varsa hemen terk edin [​IMG] 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 [​IMG] Ş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 [​IMG] Ş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 [​IMG] Ö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 [​IMG]

    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 [​IMG]

    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 [​IMG] 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 [​IMG]

    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 [​IMG]
     

Sayfayı Paylaş