Selamun aleykum herkese,bu makale Consultant Tim adına @turkmvc’nin onayı ile açılmıştır. Öncelikle uzun ve bilgilendirici bir yazı olmasını diliyorum.Konumuz PHP’de diziler giriş seviyesidir. PHP’de dizilerimizi(array) farklı tiplerde tutabiliyoruz.Bu tuttuğumuz tiplere göre de farklı özelliklerin kapılarını açıp kapatmış oluyoruz. O yüzden önce sabit ve değişken nedir? Sorusunu cevaplamalıyız. Sabit: Tanımlandıktan sonra değiştirilemeyen veri tipleridir. Başta tanımlarız daha sonra sadece tuttuğu veriye ulaşabilir üzerinde direk olarak değiştirme yapamayız. Değişken: Adı üzerinde değiştirilebilen veri türleridir. Sabitlerin aksine daha esnektirler ve oynanmaya müsaittir. Değişken tipinde array Bir diziyi değişken tipinde belirlememiz o diziye ekleme çıkarma yetkisi verir.Tanım formatımız ${ Dizinin adı } = array(“anahtar”=>”değer”) "; print_r($veri); echo ""; //Aynı örneği bu sefer anahtarlarla oluşturalım $veri =array('student'=>'Cölaslanı','teacher'=>'turkmvc' ); echo "
";
print_r($veri);
echo "
"; Görüldüğü gibi artık anahtarlar bizim belirttiğimiz şekilde oluştu. Şimdi de anahtarlar üzerinden ilgili değere ulaşmaya çalışalım. $veri =array('student'=>'Cölaslanı','teacher'=>'turkmvc' ); echo "
";
echo $veri['teacher'];
echo "
"; artık belli bir indise ulaştığımız için print_r ifadesini kullanmadığımıza dikkat edin. $veri[‘anahtar isim ’] şeklinde ilgili değeri yakalamış olduk. Daha iyi anlamak adına örneklerimizi çoğaltalım. $veri =array('Cölaslanı','teacher'=>'turkmvc' ); echo $veri['teacher']; echo $veri[0]; Bu sefer elemanlardan birine anahtar atayıp diğerini PHP’ye bıraktık.PHP bizim tarafımızdan anahtar girilmediğini gördüğü için kendisi 0 indis numarasını atadı.Daha fazla anahtarsız eleman eklersekte 0,1,2.. diyerek kendisi tamamlayacaktır. Şimdi farz edelimki bir listemiz var ve üzerinde işlemler yapacağız ama orijinal verinin işe karışmasını istemiyoruz. O zaman listemizi başka bir değişkene atayıp yeni bir listeymiş gibi gösterebiliriz. $asıl_veri =array('Cölaslanı','teacher'=>'turkmvc' ); $yeni_veri=$asıl_veri; $yeni_veri[]='Cyber-warrior'; $yeni_veri['Forum']='Aktif Kullanıcılar'; print_r($yeni_veri); print_r($asıl_veri); yeni verimize anahtar tanımlamadığımızda yine PHP kendi başına bizim için 1 değerini oluşturdu. Asıl verimizde değişmeden aynı şekilde kaldı. Bu arada dizi oluşturmak için illa ki array() dememize gerek yok köşeli parantezlerde aynı görevi görecektir.Bakınız.. $asıl_veri =['Cölaslanı','teacher'=>'turkmvc' ]; print_r($asıl_veri); Ya da boş bir dizi tanımlamak istiyoruz? $veri1 =[]; //yada $veri2=array(); print_r($veri1); print_r($veri2); Sanırım genel olarak dizileri nasıl kullanıcağımız anlaşıldı.Peki dizideki nasıl değiştiririz? Aslında yukarıda yaptık $yeni_veri['Forum']='Aktif Kullanıcılar'; gösterimini düşünürsek. PHP burda ilk olarak Forum adında bir anahtar var mı diye bakıyor yoksa Forum anahtarını oluşturup Aktif Kullanıcılar değerini atıyor.Peki bizim dizimizde daha önceden Forum anahtarı varsa ne yapar görelim. $veri =array('Forum'=>'Cw','teacher'=>'turkmvc' ); $veri['Forum']='Aktif Kullanıcılar'; print_r($veri); Gördüğünüz gibi daha önceden o anahtarı taşıyan eleman olduğu için onu güncellemiş olduk. Şimdide kodumuzu yazarken hata almamak yada referans göstermek için boş bir liste oluşturup sonrada onun üzerine eleman yazmaya bakalım.Boş dizi oluşturmayı göstermiştik tek yapmamız gereken eleman eklemek o zaman. $veri =array(); $veri['Forum']='Root'; print_r($veri); 2 tane diziyi toplayadabiliriz fakat burda ufak bir ayrıntı var .Eğer ki iki dizi içerisinde de aynı anahtar ismine sahip eleman varsa ilk tanımlanan dizinin elemanı geçerli olacaktır diğer eleman eklenmeyecektir. $veri1 = array('ders' => '1','izmir'); $veri2 = array('ders' => '2' ); print_r($veri1); print_r($veri2); print_r($veri1+$veri2 ); İstersek diziler içerisinde yeni diziler tanımlayıp verimizi dallandırabiliriz.Burda dikkat etmemiz gereken 1. indisteki elemanımız da başka bir dizi olduğu için buna echo ile değil print_r() fonksiyonu ile ulaşıyor olmamız. $veri1 = array('ders' => '1','izmir',array('ders' => '2' )); print_r($veri1); print_r($veri1[1]); Sabit Tipinde Diziler Tıpkı değişken tipinde olduğu gibi sabit değerlerde de dizilerimizi tutabiliriz. Dizilerimiz sabit olduğu için eklemeler yapamıyoruz.Aşağıdaki örneklerle daha iyi anlamaya çalışalım. Sabit tipinde array tanımı: const VERI= array('ders' => '1','izmir'); print_r(VERI); Şimdi bu örneğe ekleme yapmaya çalışalım. const VERI= array('ders' => '1','izmir',array('ders' => '2' )); VERI['ad']='selim'; print_r(VERI); Görüldüğü gibi hata mesajı ile karşılaştık. Aslın bu hata mesajı PHP nin bizden $ işareti istemesinden kaynaklı ama sabit değerleri tanımlarken $ işareti kullanmadığımız için bu özelliği kullanamamış olduk.Onun dışında sabit dizilerin indis değerlerine ulaşmayı deneyelim. const VERI= array('ders' => '1','izmir',array('ders' => '2' )); print_r(VERI['ders']); Aynı değişken tipte olduğu gibi yapabiliyoruz.Şimdi sabit dizi oluşturmanın farklı bir yoluna bakalım burda define fonksiyonunu kullanacağız. define('LISTE', array('Cölaslanı','PHP')); print_r(LISTE); print_r(LISTE[0]); Kullanım şekli olarak çok bir fark yoktur. Aşağıdaki örnekte define ile const tam olarak aynı çalışmadığını görebilirsiniz. define('LISTE', array('Cölaslanı','PHP')); const VERI= array('ders' => '1',array('ders' => '2' )); $veri=array('a'=>'deneme'); print_r(LISTE + $veri); print_r(VERI + $veri); print_r(VERI + LISTE); Bu örnekte anlamamız gereken kısaca sabit diziler anahtar alanlarına karışılmasına izin vermez ama yeni bir anahtar adıyla ekleme yapmaya kalktığımızda sıkıntı çıkarmazlar. Konunun temel olarak anlaşıldığını düşünerek burada bitiriyorum. Aklınıza gelen farklı kombinasyonlarla denemeler yaparak dizilerin çalışma mantığını anlayabiliriz. Bu yönteme ne gerek var dökümandan okuyalım şeklinde değil arkadaşlar , değişik kullanım yöntemlerine aşina olup verilerle oynayabilmemiz çok önemlidir.