PHP Diziler (Array)

PHP dizilerinin ne olduğunu ve nasıl kullanıldığını öğrenin.

PHP'de dizi (array), birden fazla değeri tek bir değişkende depolamanızı sağlayan özel bir veri yapısıdır. PHP'deki diziler, diğer birçok programlama dilindeki dizilerden biraz farklı ve daha esnektir. Temel olarak, PHP dizileri bir "sıralı harita" (ordered map) yapısındadır. Bu, hem anahtarların (keys) hem de değerlerin (values) bir koleksiyonunu barındırdıkları ve elemanların eklenme sırasını korudukları anlamına gelir. Anahtarlar, değerlere erişmek için kullanılır. PHP'de iki ana dizi türü vardır (ancak altta yatan yapı aynıdır): 1. **Sıralı (İndeksli) Diziler (Indexed Arrays):** * Anahtarlar otomatik olarak tam sayılarla (0'dan başlayarak) atanır. * Elemanlara sayısal indeksleri aracılığıyla erişilir. * **Örnek:** ```php $meyveler = array("Elma", "Armut", "Muz"); // Veya daha kısa syntax (PHP 5.4+): $meyveler = ["Elma", "Armut", "Muz"]; echo $meyveler[0]; // Çıktı: Elma echo $meyveler[2]; // Çıktı: Muz ``` 2. **İlişkisel (Anahtarlı) Diziler (Associative Arrays):** * Anahtarların adını (genellikle string) kendiniz belirlersiniz. Bu, anahtarların değerleri hakkında daha açıklayıcı olmasını sağlar. * Elemanlara bu özel adlandırılmış anahtarlar aracılığıyla erişilir. * **Örnek:** ```php $kullanici = array( "ad" => "Ali", "soyad" => "Yılmaz", "yas" => 30 ); // Veya daha kısa syntax: $kullanici = [ "ad" => "Ali", "soyad" => "Yılmaz", "yas" => 30 ]; echo $kullanici["ad"]; // Çıktı: Ali echo $kullanici["yas"]; // Çıktı: 30 ``` 3. **Çok Boyutlu Diziler (Multidimensional Arrays):** * Bir dizinin elemanları başka diziler olduğunda bu durum oluşur. Bu, karmaşık veri yapılarını (örneğin bir tablo veya ağaç yapısı) temsil etmek için kullanılır. * **Örnek:** ```php $ogrenciler = [ [ "ad" => "Ayşe", "soyad" => "Demir", "notlar" => [85, 90, 78] ], [ "ad" => "Can", "soyad" => "Kara", "notlar" => [70, 65, 80] ] ]; echo $ogrenciler[0]["ad"]; // Çıktı: Ayşe echo $ogrenciler[1]["notlar"][1]; // Çıktı: 65 (Can'ın ikinci notu) ``` --- ### PHP Dizilerinin Temel Özellikleri ve Yapısı: * **Sıralı (Ordered):** PHP 5.3'ten itibaren, dizilerdeki elemanlar eklenme sırasını korur. Bu, `foreach` döngüleriyle veya anahtarları manuel olarak gezinirken önemlidir. * **Karma Anahtarlar (Mixed Keys):** Bir PHP dizisi hem string anahtarlar hem de integer anahtarlar içerebilir. ```php $karisikDizi = [ 0 => "ilk", "ad" => "Mehmet", 1 => "ikinci" ]; // Anahtarların sırası korunur: 0, "ad", 1 ``` * **Karma Değer Türleri (Mixed Value Types):** Bir dizinin farklı elemanları farklı veri türlerinde olabilir (string, integer, boolean, float, object, null, hatta başka diziler). ```php $veri = [ "isim" => "Deniz", "yas" => 25, "aktif" => true, "hobiler" => ["yüzme", "okuma"] ]; ``` * **Dinamik Boyut (Dynamic Size):** PHP dizileri sabit bir boyuta sahip değildir. İstenildiği zaman yeni elemanlar eklenebilir veya mevcut elemanlar silinebilir, böylece dizinin boyutu otomatik olarak ayarlanır. ```php $liste = []; $liste[] = "eleman1"; // 0. indekse ekler $liste[] = "eleman2"; // 1. indekse ekler $liste["anahtar"] = "deger"; // İlişkisel eleman ekler unset($liste[0]); // Elemanı siler ``` * **Kopyala-Yapıştır Semantiği (Copy-on-Write / Pass by Value):** Bir dizi bir fonksiyona argüman olarak geçirildiğinde (varsayılan olarak) veya başka bir değişkene atandığında, dizinin bir kopyası oluşturulur. Ancak, PHP'nin optimizasyonları sayesinde, dizi üzerinde bir değişiklik yapılmadığı sürece bellek kopyalama işlemi gerçekleşmez (copy-on-write). Performans kritik durumlarda veya büyük dizilerde referans ile geçirme (`&$dizi`) kullanılabilir, ancak genellikle varsayılan davranış yeterlidir. --- ### Dizileri Kullanma ve Erişme: * **Oluşturma:** * `array()` fonksiyonu ile: `array("deger1", "deger2")` veya `array("anahtar" => "deger")` * `[]` kısa syntax ile (önerilen): `["deger1", "deger2"]` veya `["anahtar" => "deger"]` * **Eleman Ekleme/Güncelleme:** ```php $dizi = []; $dizi[] = "Yeni eleman"; // Sıradaki integer indekse ekler $dizi[1] = "İkinci eleman"; // Belirli indeksi günceller/ekler $dizi["yeni_anahtar"] = "Yeni değer"; // İlişkisel anahtarla ekler/günceller ``` * **Elemanlara Erişim:** * `$dizi[anahtar]` veya `$dizi[indeks]` * Mevcut olmayan bir anahtara erişmeye çalışmak bir uyarı (`Undefined index`) verir. Bu durumu `isset()` veya `array_key_exists()` ile kontrol etmek önemlidir. ```php if (isset($kullanici["ad"])) { echo $kullanici["ad"]; } ``` * **Eleman Silme:** * `unset($dizi[anahtar])` veya `unset($dizi[indeks])` --- ### Diziler Üzerinde Dönme (İterasyon): PHP dizilerini gezinmek için en yaygın ve etkili yöntem `foreach` döngüsüdür: ```php // Sadece değerler üzerinde dönme $meyveler = ["Elma", "Armut", "Muz"]; foreach ($meyveler as $meyve) { echo $meyve . "<br>"; } // Anahtar ve değerler üzerinde dönme $kullanici = ["ad" => "Ali", "soyad" => "Yılmaz"]; foreach ($kullanici as $anahtar => $deger) { echo $anahtar . ": " . $deger . "<br>"; } ``` --- ### Yaygın Dizi Fonksiyonları: PHP, dizilerle çalışmak için çok zengin bir fonksiyon setine sahiptir: * `count($dizi)`: Dizideki eleman sayısını döndürür. * `array_keys($dizi)`: Dizinin tüm anahtarlarını içeren yeni bir dizi döndürür. * `array_values($dizi)`: Dizinin tüm değerlerini içeren yeni bir dizi döndürür. * `in_array($deger, $dizi)`: Belirtilen değerin dizide olup olmadığını kontrol eder. * `array_key_exists($anahtar, $dizi)`: Belirtilen anahtarın dizide olup olmadığını kontrol eder. * `sort($dizi)`: Diziyi değerlerine göre artan sırada sıralar (indeksleri bozar). * `asort($dizi)`: Diziyi değerlerine göre artan sırada sıralar (anahtar-değer ilişkisini korur). * `ksort($dizi)`: Diziyi anahtarlarına göre artan sırada sıralar (anahtar-değer ilişkisini korur). * `implode($ayrac, $dizi)`: Dizi elemanlarını birleştirerek bir string oluşturur. * `explode($ayrac, $string)`: Bir string'i ayraca göre parçalayarak bir dizi oluşturur. * `array_merge($dizi1, $dizi2)`: İki veya daha fazla diziyi birleştirir. * `array_filter($dizi, $callback)`: Bir geri çağırma (callback) fonksiyonuna göre diziyi filtreler. * `array_map($callback, $dizi)`: Bir geri çağırma fonksiyonunu dizinin her elemanına uygular. --- PHP dizileri, esneklikleri ve çok yönlülükleri sayesinde PHP geliştirme dünyasının temel taşlarından biridir. Veritabanından çekilen verileri, API yanıtlarını, form gönderilerini veya herhangi bir yapılandırılmış veri koleksiyonunu depolamak ve işlemek için yaygın olarak kullanılırlar.
Son Paylaşımlar
Kategoriler