Eğitim

Ders 4: Diziler

Giriş

Diziler (arrays), birden fazla değeri tek bir değişken altında saklamak için kullanılan veri yapılarıdır. PHP’de diziler oldukça güçlüdür ve çeşitli veri tiplerini aynı anda barındırabilir. Bu makalede, PHP’de dizilerin nasıl tanımlandığı, kullanıldığı, dizi elemanlarına nasıl erişildiği ve dizilerle yapılabilecek işlemler detaylı olarak ele alınacaktır.

Dizi Nedir?

Dizi, birden fazla veriyi tek bir değişken içinde tutan bir veri yapısıdır. Örneğin, bir sınıftaki öğrencilerin isimlerini, bir dizide saklayabilirsiniz. Diziler, aynı tipte veya farklı tipte verileri bir arada tutabilir.

Özellikleri:

  • Bir dizi birden fazla eleman içerir.
  • Her elemanın bir anahtarı (index) ve değeri vardır.
  • Diziler, sıralı (indexed) ve anahtar-değer (associative) olmak üzere iki ana türde olabilir.

Dizilerin Tanımlanması

PHP’de dizi oluşturmak için array() fonksiyonu veya köşeli parantez [] kullanılır.

Yapısı:

$isimler = array("Ali", "Veli", "Ayşe");

Veya

$isimler = ["Ali", "Veli", "Ayşe"];

Bu örnekte, isimler adında bir dizi tanımlanmış ve “Ali”, “Veli”, “Ayşe” isimleri diziye eleman olarak eklenmiştir.

Dizi Elemanlarına Erişim

Dizi elemanlarına, sıfırdan başlayan indeks numaraları ile erişilir. İlk eleman indeks numarası 0, ikinci eleman 1 vb. olarak devam eder.

Örnek:

$isimler = ["Ali", "Veli", "Ayşe"];

echo $isimler[0]; // "Ali" çıktısını verir.
echo $isimler[2]; // "Ayşe" çıktısını verir.

Anahtar-Değer Dizileri (Associative Arrays)

Anahtar-değer dizileri, her elemanın bir anahtara (key) sahip olduğu dizilerdir. Bu dizilerde, elemanlara indeks numarası yerine anahtar adıyla erişilir.

Yapısı:

$ogrenci = array("isim" => "Ali", "yas" => 21, "sinif" => "4A");

Veya

$ogrenci = ["isim" => "Ali", "yas" => 21, "sinif" => "4A"];

Bu örnekte, ogrenci adında bir anahtar-değer dizisi tanımlanmıştır. Bu dizi, “isim”, “yas” ve “sinif” anahtarlarına sahiptir.

Anahtar-Değer Dizisi Elemanlarına Erişim:

echo $ogrenci["isim"]; // "Ali" çıktısını verir.
echo $ogrenci["yas"]; // "21" çıktısını verir.

Dizi Fonksiyonları

PHP, dizilerle çalışmayı kolaylaştıran birçok yerleşik fonksiyon sunar. Bunlardan bazıları şunlardır:

  1. count(): Dizideki eleman sayısını döndürür. $sayilar = [1, 2, 3, 4, 5]; echo count($sayilar); // 5 çıktısını verir.
  2. array_push(): Diziye bir veya daha fazla eleman ekler. $renkler = ["Kırmızı", "Mavi"]; array_push($renkler, "Yeşil", "Sarı"); print_r($renkler); // ["Kırmızı", "Mavi", "Yeşil", "Sarı"]
  3. array_pop(): Diziden son elemanı çıkarır ve döndürür. $renkler = ["Kırmızı", "Mavi", "Yeşil"]; $sonEleman = array_pop($renkler); echo $sonEleman; // "Yeşil" çıktısını verir. print_r($renkler); // ["Kırmızı", "Mavi"]
  4. array_merge(): Birden fazla diziyi birleştirir. $dizi1 = ["Elma", "Armut"]; $dizi2 = ["Muz", "Çilek"]; $birlesmisDizi = array_merge($dizi1, $dizi2); print_r($birlesmisDizi); // ["Elma", "Armut", "Muz", "Çilek"]
  5. array_diff(): İki veya daha fazla dizi arasındaki farkı döndürür. $dizi1 = ["Elma", "Armut", "Muz"]; $dizi2 = ["Armut", "Muz", "Çilek"]; $fark = array_diff($dizi1, $dizi2); print_r($fark); // ["Elma"]

Çok Boyutlu Diziler

Çok boyutlu diziler, bir dizi içinde başka dizilerin bulunduğu yapılardır. En yaygın olanı iki boyutlu dizilerdir.

Örnek:

$ogrenciler = [
["isim" => "Ali", "yas" => 21],
["isim" => "Veli", "yas" => 22],
["isim" => "Ayşe", "yas" => 20]
];

echo $ogrenciler[0]["isim"]; // "Ali" çıktısını verir.
echo $ogrenciler[1]["yas"]; // "22" çıktısını verir.

Bu örnekte, ogrenciler adında bir iki boyutlu dizi tanımlanmıştır. Her eleman bir anahtar-değer dizisidir ve öğrenci bilgilerini tutar.

Dizi Döngüleri

Diziler üzerinde döngülerle işlem yapmak yaygın bir uygulamadır. PHP’de diziler üzerinde işlem yapmak için foreach döngüsü kullanılır.

Örnek:

$renkler = ["Kırmızı", "Mavi", "Yeşil"];

foreach ($renkler as $renk) {
echo $renk . "<br>";
}

Bu kod, renkler dizisindeki her elemanı sırayla ekrana yazdırır.

Anahtar-değer dizileri üzerinde döngü yapmak için foreach döngüsünü şu şekilde kullanabilirsiniz:

$ogrenci = ["isim" => "Ali", "yas" => 21, "sinif" => "4A"];

foreach ($ogrenci as $anahtar => $deger) {
echo $anahtar . ": " . $deger . "<br>";
}

Bu kod, ogrenci dizisindeki her anahtar ve değeri ekrana yazdırır.

Ödev

Bu derste öğrendiklerinizi pekiştirmek için aşağıdaki ödevleri yapmanız gerekmektedir:

  1. Ülke ve Başkentler Dizisi: Ülkeler ve başkentlerini tutan bir anahtar-değer dizisi oluşturun. Bu diziyi kullanarak, döngü ile her ülke ve başkentini ekrana yazdırın.
  2. Öğrenci Notları: Bir sınıftaki öğrencilerin adlarını ve notlarını içeren çok boyutlu bir dizi oluşturun. Bu diziyi kullanarak her öğrencinin adını ve notunu ekrana yazdırın.
  3. Dizi Birleştirme: İki farklı diziyi array_merge() fonksiyonu kullanarak birleştirin. Birleştirilen dizinin elemanlarını ekrana yazdırın.
  4. Dizi Farkları: İki farklı diziyi karşılaştırarak farklarını bulan bir program yazın. Örneğin, bir dizide olan fakat diğerinde olmayan elemanları ekrana yazdırın.
  5. Dizi Elemanı Çıkarma: Bir dizi oluşturun ve son elemanını array_pop() fonksiyonu ile çıkartın. Çıkarılan elemanı ve kalan diziyi ekrana yazdırın.

Bu ödevler, dizilerle çalışmayı pekiştirmenizi ve öğrendiklerinizi pratiğe dökmenizi sağlayacaktır. Diziler, veriyi organize etmenin ve yönetmenin en temel yollarından biridir ve bu dersle birlikte dizileri etkili bir şekilde kullanmayı öğreneceksiniz.