PHP'de Diziler
Normal şartlarda bir değişkenin sakladığı tek bir değerdir. Eğer birden fazla değer saklamak isteseydik bunu diziler yardımıyla yapabilirdik.
Dizi oluşturmak
PHP'de dizi oluşturmak için array()
fonksiyonu ya da []
yapısı kullanılır. Örnek bir dizi oluşturalım.
$yaslar = array(27, 27, 32);
$isimler = ["Tayfun", "Mehmet", "Gökhan"];
Her iki şekilde oluşturduğumuzda da geçerli olacaktır. array()
tüm php sürümlerinde çalışırken []
muhtemelen 5 ve öncesinde çalışmayabilir ancak bir önemi yok çünkü bizde php'nin 5. versiyonunu kullanma taraftarı değiliz. Minimum 7. versiyonunu kullanmak performans için daha doğru bir tercih olur.
Peki oluşturduğumuz $isimler
dizisini ekrana basmaya çalışırsak ne olur?
echo $isimler;
Burada alacağınız sonuç şöyle olacaktır;
Array
Evet gördüğünüz gibi dizi değeri depoladığı için böyle ekrana basamıyoruz. Ne yapacağız_
Dizi değerlerini ekrana basmak
Her dizi değerinin bir anatarı vardır. Ve unutmayın, dizi anahtarları (index - indis) 0
değerinden başlar. Yani yukarıdaki örneğimizde eğer ben Mehmet
değerini ekrana basmak istersem 1. öğeyi ekrana basmam gerekiyor. Bunuda şöyle yapıyoruz;
echo $isimler[1]; // Çıktı: Mehmet
Bu mantıkta 0
bana Tayfun
değerini, 1
bana Mehmet
değerini ve 2
bana Gökhan
değerini verecektir.
Anahtar-değer dizi oluşturmak
Yukarıdaki örneğimizde dizi tanımlarken biz sadece değerleri verdik, elbette böyle yapmak zorunda değiliz. Ayrıca özel olarak anahtarları belirterekte dizi oluşturmamız mümkün. Şöyle ki;
$user = [
"name" => "Tayfun",
"surname" => "Erbilen",
"age" => 27,
"sizce bunu ekrana nasıl basarım?"
];
Gördüğünüz gibi anahtar => değer
şeklinde atama yaptım ve her bir anahtar-değer arasında virgül koydum.
Eğer anahtarı belirlediksek onun değerine bu anahtarları kullanarak ulaşabiliriz. Örneğin adımı ve soyadımı şöyle ekrana basabilirim;
echo $user['name'] . ' ' . $user['surname'];
Peki "sizce bunu ekrana nasıl basarım?"
bunu nasıl ekrana basacağım? Yukarıda öğrendiğimiz gibi, eğer anahtar tanımı yoksa 0'dan başlayacağı için şöyle ekrana basabiliriz;
echo $user[0];
İç içe dizi oluşturmak
Ayrıca sıkça kullanacağımız şey ise, dizi içinde dizi depolamak olacak. Bir örnek vermek gerekirse;
$user = [
"name" => "Tayfun",
"surname" => "Erbilen",
"age" => 27,
"skills" => ["PHP", "CSS", "HTML"],
"pets" => [
"dogs" => [
[
"name" => "Monti",
"gender" => "Dişi",
"age": 2
]
],
"cats" => [
[
"name" => "Paşa",
"gender" => "Erkek",
"age": 3
],
[
"name" => "Göbek",
"gender" => "Dişi",
"age" => 1.5,
],
[
"name" => "Şans",
"gender" => "Dişi",
"age" => 0.7
]
]
]
];
Karmaşık mı geldi? Hadi ama, o kadar karmaşık olamaz. Tek yaptığımız anahtar-değer
kısmında değer
kısmına yine bir dizi tanımlamak oldu. Gelin şimdi Şans
ismini ekrana nasıl basarız ona bir bakalım.
echo $user['pets']['cats'][2]['name'];
Gördüğünüz gibi önce pets
anahtarını seçtim, o da yine bir dizi depoluyor o dizi içinde cats
anahtarını seçtim ve onun oluşturduğu dizide anahtar ismi olmadığı için 2. anahtarı yani 3. öğeyi seçerek onun içindeki name
anahtarının değerini ekrana bastım. Bu şekilde istediğiniz kadar iç içe dizi oluşturup kullanabilirsiniz.
Sabit değişkenlerde dizi tanımı
Ayrıca sabit değişkende dizi değeri depolayabilirsiniz. Örneğin;
define('DIRS', ['.', '..', '/vendor']);
aynı mantıkta ekrana basabilirsiniz;
echo DIRS[2]; // Çıktı: /vendor
Tabi sabit değişken olduğu için başında $
olmadan kullanıyoruz :)