Php Diziler – Php Diziler Nedir ve Nasıl Kullanılır?

php-diziler-banner

Php Diziler

Php diziler ya da dizi değişkenler verilerin saklanmasında oldukça önemli rol oynar. Özellikle veri tabanı işlemlerinde oldukça sık rastlayacağız. Diziler aslında bir listedir. Bir değişken içinde birden fazla veri saklanmasıdır. Diziler içindeki veriler sırayla saklanır. Verilerin sırası (indis) 0 dan başlar ve son veriye kadar devam eder.

Örnek kullanım:

<?php 
$kelime = "deneme";
echo $kelime[0]. "<br/>";
echo $kelime[1]. "<br/>";
echo $kelime[2]. "<br/>";
echo $kelime[3]. "<br/>";
echo $kelime[4]. "<br/>";
echo $kelime[5]. "<br/>";

echo $kelime[6]; // uyarı hatası verir.
?>

Yukarıdaki örnek üzerinden anlatmak gerekirse bir kelime içindeki her harf o kelimenin elemanıdır yani kelime bir dizidir ve harfler bu dizinin verisidir.  Verilerin sayımının 0’dan başladığını belirmiştik. Deneme kelimesi 6 harfli olduğu indis aralığı 0-5‘tir. Örnekteki gibi 6 indisini yani 7. harfi çağırdığımızda uyarı hatası verecektir. Burada dikkat edilmesi gereken indis sırasının 0’dan başlamasıdır. Genellikle bu sıra karıştırılmaktadır.

Bu php diziler birçok yerde kullanılır. Örneğin bir kayıt formunda işaret kutucuklarının verileri bir dizi halinde gönderilir. Veri tabanından çektiğimiz kayıtlar yine dizi halinde gelir ve döngü ile yazdırırız. 

Döngüler hakkında detaylı bilgi için Php Programlama Döngüler konusunu inceleyebilirsiniz.

Formu post ettiğimizde yine veri anahtarları ile $_POST global değişkenine dizi olarak gönderilir erişmek için veri  anahtarlarını kullanırız. Yani bu örnekler bu şekilde çoğaltılabilir. Biz buraya genel kullanım şekillerini örnekler halinde inceleyeceğiz.

Form kullanımı için Php Programlama – Php ile Form Kullanımı konusunu Php Global değişkenleri için Php Programlama – Php Global Değişkenleri konusunu inceleyebilirsiniz.

Şimdi php diziler konusunda kaldığımız yerden devam edelim. Dizilerin iki farklı kullanım şekli vardır. Biri array() diğeri ise [ ] köşeli parantez bu iki kullanımda aynı işlemi yapar.

Örnek kullanım:

[ ] köşeli parantez ile php diziler tanımlama.

<?php 
$meyveler = ["çilek", "elma", "armut", "muz"];
echo $meyveler["0"]."<br/>";
echo $meyveler["1"]."<br/>";
echo $meyveler["2"]."<br/>";
echo $meyveler["3"]."<br/>";
?>

Örnek kullanım:

array() fonksiyonu ile php diziler tanımlama.

<?php 
$meyveler = array("çilek", "elma", "armut", "muz");
echo $meyveler["0"]."<br/>";
echo $meyveler["1"]."<br/>";
echo $meyveler["2"]."<br/>";
echo $meyveler["3"]."<br/>";
?>

İki kullanım yapısını da denediğinizde farklı bir sonuç olmadığı göreceksiniz. Şimdi kardeşim ben bu diziyi anladım da elemanları böyle tek tek mi yazdıracağım diyenler olabilir. Burada dizinin uzunluğunu yani eleman sayısını bulmamız gerekir. Bu işlem için count() ya da sizeof() fonksiyonu ile eleman sayısını bulup döngü de yazdırabiliriz.

Döngüler hakkında detaylı bilgi için Php Programlama Döngüler konusunu inceleyebilirsiniz.

Örnek kullanım:

<?php 
$meyveler = array("çilek", "elma", "armut", "muz");

for($i = 0; $i < count($meyveler); $i++){
echo $meyveler[$i]."<br/>";
}
?>

Yukarıdaki örnekte yine meyveler dizimizin elemanlarını bu sefer döngü ile yazdırdık. Tabi bu gelişmiş uygulamalarda meyveler diye bir dizi olmayacak veri tabanından gelen veriyi aynen bu şekil döngüyle tabloda listeleyebiliriz.

Php diziler de verilere indis numaraları haricinde kendi belirlediğimiz anahtar kelime ile erişmemizde mümkündür.  Bu dizilere ilişkisel diziler ismi verilir.

İlişkisel Diziler

Dizi elemanlarına özel anahtar kelime belirtilmediyse varsayılan olarak indis numaraları ile erişiriz. Ancak bazı durumlarda ya da kullanım kolaylığı açısından anahtar kelimeler belirtiriz.

Örnek kullanım:

Bir öğrenci listesi düşünelim. Öğrencileri diziye aktardığımızı varsayalım.

array() fonksiyonu ile kullanımı aşağıdaki gibidir.

<?php 
$ogrenciler = array("adsoyad" => "Mustafa AZAK", "numara" => "475", "cinsiyet" => "erkek");
echo $ogrenciler["adsoyad"]."<br/>";
echo $ogrenciler["numara"]."<br/>";
echo $ogrenciler["cinsiyet"];
?>

Bir dizide indis numarası yerine anahtar kelime belirlemek için önce “anahtar kelime” sonra  eşit büyük => ve bu anahtar kelimenin saklayacağı veriyi yazarız.

Örnek kullanım:

[ ] köşeli parantezler ile kullanımı biraz daha farklı aşağıdaki gibidir.

<?php 
$ogrenciler["adsoyad"] = "Mustafa AZAK";
$ogrenciler["numara"] = 475;
$ogrenciler["cinsiyet"] = "erkek";

echo $ogrenciler["adsoyad"]."<br/>";
echo $ogrenciler["numara"]."<br/>";
echo $ogrenciler["cinsiyet"]."<br/>";
?>

Köşeli parantez kullanımı daha çok değişkene değer atamaya benziyor.  İki kullanımda da aynı sonucu elde edersiniz. Hangisi kolayınıza gidiyorsa onu kullanın.

İlişkisel php diziler veri tabanından çektiğiniz verileri ekrana yazdırırken daha iyi anlayacaksınız.

Şimdi bu örneklerde tek bir öğrenci verisini sakladık ama bir sınıfta yaklaşık 20-30 öğrenci vardır. Bu öğrencileri dizide saklamak için devreye çok boyutlu diziler girer.

Çok Boyutlu Php Diziler (İç İçe Diziler)

Çok boyutlu php diziler matematikteki matrislere benzer. Örneğin öğrencilerin bilgilerini saklamak için en kolay yol dizilerdir. Ancak her öğrenci için ayrı ayrı dizi oluşturamayız. Çok boyutlu dizilerde her öğrenci için bir indis belirleyip verileri saklamak mümkündür.

Örnek kullanım:

Bu örnekte hem [ ] köşeli parantez ile hem de array() fonksiyonu ile çok boyutlu dizi oluşturmayı göreceğiz.

<?php 
/* array() fonksiyonu ile çok boyutlu dizi oluşturma */
$ogrenciler = array();
$ogrenciler[0] = array("adsoyad" => "Mustafa AZAK", "numara" => "475", "cinsiyet" => "erkek");
$ogrenciler[1] = array("adsoyad" => "Hasan DURAN", "numara" => "123", "cinsiyet" => "erkek");
$ogrenciler[2] = array("adsoyad" => "Ayşe TERZİ", "numara" => "987", "cinsiyet" => "kadın");
$ogrenciler[3] = array("adsoyad" => "Şükrü UZUN", "numara" => "567", "cinsiyet" => "erkek");

/* [ ] köşeli parantez ile çok boyutlu dizi oluşturma */
$ogrenciler[0]["adsoyad"] = "Mustafa AZAK";
$ogrenciler[0]["numara"] = "475";
$ogrenciler[0]["cinsiyet"] = "erkek";

$ogrenciler[1]["adsoyad"] = "Hasan DURAN";
$ogrenciler[1]["numara"] = "123";
$ogrenciler[1]["cinsiyet"] = "erkek";

$ogrenciler[2]["adsoyad"] = "Ayşe TERZİ";
$ogrenciler[2]["numara"] = "987";
$ogrenciler[2]["cinsiyet"] = "kadın";

$ogrenciler[3]["adsoyad"] = "Şükrü UZUN";
$ogrenciler[3]["numara"] = "567";
$ogrenciler[3]["cinsiyet"] = "erkek";

/* Çok boyutlu dizi elemanlarını yazdırma. Görmeniz açısından sadece 0 indisli elemanı yazdırdım diğerlerini için indis numaralarını değiştirin. Döngü ile yazdırmayı deneyin.*/
echo $ogrenciler[0]["adsoyad"]."<br/>";
echo $ogrenciler[0]["numara"]."<br/>";
echo $ogrenciler[0]["cinsiyet"]."<br/>";
?>

Yukarıdaki isimler tamamen hayal ürünüdür gerçek kişi ya da kurumlar ile hiç bir alakası yoktur 😀

İki kullanım arasındaki bariz fark biri kısa biri uzun ancak ekran çıktıları aynıdır.  Çok boyutlu dizi oluşturma ve dizi elemanına nasıl erişildiğini bu örnekte gösterdik. Farklı örnekler yaparak bu konuyu daha iyi kavrayabilirsiniz.

Diziye Ekleme, Çıkarma, Ters Çevirme ve Silme

Dizilerde kullanılan bazı php fonksiyonları vardır. Bu fonksiyonlar dizilerde aklınıza gelebilecek çoğu şeyi basitçe yapmamızı sağlar.

array_push()

Dizinin sonundan bir veya daha fazla eleman eklemek için kullanılır. Aşağıdaki örnekte üç elemanlı dizinin sonuna üç eleman daha ekleyip döngü ile ekrana yazdırma örneğini inceleyelim.

Örnek kullanım:

<?php 
$meyveler = ["elma", "armut", "çilek"];
array_push($meyveler, "muz", "karpuz", "mandalina");

foreach ($meyveler as $meyve){
echo $meyve."<br/>";
}
?>

array_shift()

Dizini ilk elemanını elde etmek için kullanılır.

Örnek kullanım:

<?php 
$meyveler = ["elma", "armut", "çilek"];
echo array_shift($meyveler);
?>

Ekrana dizinin ilk elemanı olan Elma’yı yazdıracaktır.

array_unshift()

Dizinin başına bir veya daha fazla eleman eklemek için kullanılır. Aşağıdaki örnekte üç elemanlı dizinin başına üç eleman daha ekleyip döngü ile ekrana yazdırma örneğini inceleyelim.

Örnek kullanım:

<?php 
$meyveler = ["elma", "armut", "çilek"];
array_unshift($meyveler, "muz", "karpuz", "mandalina");

foreach ($meyveler as $meyve){
echo $meyve."<br/>";
}
?>

array_pop()

Dizinin son elemanını elde etmemizi sağlar.

Örnek kullanım:

<?php 
$meyveler = ["elma", "armut", "çilek"];
echo array_pop($meyveler);
?>

Ekrana dizinin son elemanı olan çilek yazdıracaktır.

array_reverse()

Diziyi ters çevirmek için kullanılır. Mevcut dizi elemanlarını ters sıralayarak yeni dizi döndürür.  

Örnek kullanım:

<?php 
$meyveler = ["elma", "armut", "çilek"];
$ters_dizi = array_reverse($meyveler);
echo "<pre>";
echo "Normal dizi : ";
print_r ($meyveler);
echo "<br/> Ters dizi : ";
print_r ($ters_dizi);
echo "</pre";
?>

unset()

unset() fonksiyonu aslında çok amaçlı sadece dizilerde değil, değişkenlerde, $_SESSION, $_COOKIE gibi global değişkenlerin değerlerde ve bir çok alanda kullanılır. Kısaca açıklamak gerekirse değeri silmek için kullanılır. 

Örnek kullanım:

<?php 
$meyveler = ["elma", "armut", "çilek"];
echo "<pre>";
print_r ($meyveler);
unset($meyveler[2]);
print_r ($meyveler);
echo "</pre>";
?>

Dizi Fonksiyonları

is_array()

Değişkenin dizi olup olmadığını kontrol etmek için kullanılır.

Örnek kullanım:

<?php 
$dizi = ["elma", "armut", "muz"];
if(is_array($dizi)){
echo "Bu bir dizi.";
}else{
echo "Bu bir dizi değil.";
}
?>

explode()

Bu fonksiyon genelde metin parçalamada, tarih parçalamada kullanılır. İki parametre alır. Parçalama ayracı ve parçalanacak veri.

Örnek kullanım:

<?php 
$tarih = date("Y-m-d");
$tarih_bol = explode("-", $tarih);
$tarih = $tarih_bol[2]." ". $tarih_bol[1]. " ". $tarih_bol[0];
echo $tarih;
?>

Tarih verisini veri tabanından aldığımızı varsayarsak current_time kullanımda tarih verisi Yıl – Ay – Gün Saat şeklinde kayıt edilir. Bu durumda parçalayıp tekrar birleştirerek düz hale getirebiliriz.

Kodu incelediğimizde bir dizi yapısı oluştuğunu görebilirsiniz.

implode()

Bu fonksiyon birleştirme için kullanılır. explode() fonksiyonun tersini yapar, kullanım mantığı aynıdır. İki parametre alır. Birinci parametre birleştirme ayracı ve ikincisi birleştirilecek veriler.

Örnek kullanım:

<?php 
$tarih = date("Y-m-d");
$tarih_bol = explode("-", $tarih);
$tarih = implode ("/", $tarih_bol);
echo $tarih;
?>

explode() ile parçaladığımız tarihi implode() ile birleştirdik.

list()

Dizi elemanlarına istediğimiz değişken ismi ile erişmemizi sağlar.

Örnek kullanım:

<?php 
$ogrenciler = array("hasan", "ali", "ahmet");
list($ogrenci1, $ogrenci2, $ogrenci3) = $ogrenciler;
echo "Öğrenciler : $ogrenci1, $ogrenci2, $ogrenci3";
?>

Burada dikkat etmek gereken nokta list() fonksiyonunun sonunda $ogrenciler dizisini gönderdik. Başında gönderildiğinde yazım hatası verir. 

array_sum()

Dizi içindeki sayısal değerlerin toplamını verir.

Örnek kullanım:

<?php 
$sayilar = [5,6,7,8,9];
echo array_sum($sayilar);
?>

Ekrana 35 sonucu yazdırılacaktır.

Php Diziler Arama ve Karşılaştırma

array_key_exists()

Dizi içinde belirtilen indis veya anahtara sahip eleman olup olmadığını kontrol eder.

Örnek kullanım:

Örnekte 2 numaralı indis kontrolünü yaptık, var olduğu için ekrana var yazacaktır.

<?php 
$sayilar = [5,6,7,8,9];
if(array_key_exists(2, $sayilar)){
  echo "var";
}else{
  echo "yok";
}
?>

in_array()

Dizi içinde belirtilen verinin olup olmadığını kontrol eder. 

Örnek kullanım:

Örnekte dizide elma değerini aradık. Elma mevcut olduğu için ekrana var yazacaktır.

<?php 
$dizi = ["elma", "armut", "muz"];
if(in_array("elma",$dizi)){
echo "var";
}else{
echo "yok";
}
?>

array_search()

Dizide istenilen değeri arar ve bulduğu değerin anahtarını döndürür.

Örnek kullanım:

Örnekte dizide elma aradığımız için bize meyve anahtarını döndürecektir. Pırasa arasaydık sebze döndürecekti.

<?php 
$dizi = ["meyve" => "elma", "sebze" => "pırasa"];
if($anahtar = array_search('elma', $dizi)){
  echo $anahtar;
}
?>

array_intersect()

İki dizi arasında aynı değere sahip olan elemanları bulur.

Örnek kullanım:

Örnekte dizi1 ve dizi2’yi karşılaştırıp ortak elemanlını ekrana yazdıracak. 

<?php 
$dizi1 = array("hasan", "ali", "veli", "ahmet");
$dizi2 = array("hüseyin", "ahmet", "çoşkun", "kemal");
$ayni_eleman = array_intersect($dizi1, $dizi2);

print_r ($ayni_eleman);
?>

Ekran görüntüsü Array ( [3] => ahmet ) şeklinde olacaktır.

array_intersect_assoc()

Aynı anahtara sahip dizilerin elemanlarını bulur.

Örnek kullanım:

Örnekte iki dizideki aynı anahtara sahip elemanların değerlerini bulur. 

<?php 
$dizi1 = array("ogrenci1" => "ahmet", "ogrenci2" => "hasan", "ogrenci3" => "veli");
$dizi2 = array("ogrenci1" => "ahmet", "ogrenci2" => "hasan", "ogrenci3" => "hüsnü");
$ayni_eleman = array_intersect_assoc($dizi1, $dizi2);
print_r ($ayni_eleman);
?>

Ekran görüntüsü Array ( [ogrenci1] => ahmet [ogrenci2] => hasan ) şeklinde olacaktır.

array_diff()

Diziler arasındaki aynı olmayan farklı elemanları bulur.

Örnek kullanım:

Örnekte iki dizideki farklı elemanları bulur. 

<?php 
$dizi1 = array("ogrenci1" => "ahmet", "ogrenci2" => "hasan", "ogrenci3" => "veli");
$dizi2 = array("ogrenci1" => "ahmet", "ogrenci2" => "hasan", "ogrenci3" => "hüsnü");
$ayni_eleman = array_diff($dizi1, $dizi2);
print_r ($ayni_eleman);
?>

Ekran görüntüsü Array ( [ogrenci3] => veli ) şeklinde olacaktır.

array_count_values()

Dizide aynı elemandan kaç tane olduğunu bulur.

Örnek kullanım:

Örnekte dizi içinde aynı elemandan kaç tane olduğunu buldurduk. 

<?php 
$dizi = array ("ali","hasan", "veli", "ali", "veli", "ali", "hasan", "ali");
$sonuc = array_count_values($dizi);
print_r ($sonuc);
?>

Ekran görüntüsü Array ( [ali] => 4 [hasan] => 2 [veli] => 2 ) şeklinde olacaktır.

Php Diziler Değişiklik

array_splice()

Bir dizide istediğimiz aralığı silip yerine başka eleman koymak için kullanılır.

array_splice(dizi_adi, başlangıç, eleman sayısı, yeni eleman);

Örnek kullanım:

Örnekte 3 numaralı indise sahip elemandan başlayıp 1 eleman silen ve yerine Hilmi verisini ekleyen kodları inceleyin.

<?php 
$dizi = array ("ali", "hasan", "veli", "hamit", "mahmut");
array_splice($dizi, 3, 1, "hilmi");
echo "<pre>";
print_r ($dizi);
echo "</pre>";
?>

Ekran görüntüsü Array ( [0] => ali [1] => hasan [2] => veli [3] => hilmi [4] => mahmut ) şeklinde olacaktır. Görüldüğü üzere diziden Hamit değeri silinmiş yerine Hilmi değeri eklenmiştir.

array_slice()

Bir dizide belirlediğimiz aralıktaki verileri almak için kullanılır. Belirlediğimiz aralıktaki verileri dizi olarak döndürür.

Örnek kullanım:

Örnekte 1 numaralı indis ile 3 numaralı indis arasındaki verileri $aralik değişkenine tekrar bir dizi olarak aktardık.

<?php 
$dizi = array ("ali", "hasan", "veli", "hamit", "mahmut");
$aralik = array_slice($dizi, 1,3);
print_r ($aralik);
?>

Ekran görüntüsü Array ( [0] => hasan [1] => veli [2] => hamit ) şeklinde olacaktır.

array_unique()

Bir dizide aynı olan elemanların eşlerini siler o elemandan sadece bir tane bırakır. Dizilerde tekrar eden verileri temizlemek için kullanılır.

Örnek kullanım:

Örnekte tekrar eden verileri temizledik ve dizi şemasını ekrana yazdırdık.

<?php 
$dizi = array ("ali", "hasan", "ali", "hamit", "ali");
$temizle = array_unique($dizi);
print_r ($temizle);
?>

Ekran görüntüsü Array ( [0] => ali [1] => hasan [3] => hamit ) şeklinde olacaktır. Dizi de tekrar eden ali değerleri silinmiştir. Sadece bir tane ali değeri vardır.

array_chunk()

Bir diziyi parçalara bölmek için kullanılır. Üç parametre alır üçüncü parametre true verilirse sıra numaraları ile birlikte bölünür.

array_chunk($dizi, $bölen, true ya da false); 

Örnek kullanım:

Örnekte 8 elemanlı dizimizi 3’erli olacak şekilde böldük.

<?php 
$dizi = array ("ali", "hasan", "veli", "hamit", "ahmet", "kemal", "sıddık", "mehmet");
$sonuc = array_chunk($dizi, 3);
echo "<pre>";
print_r ($sonuc);
echo "</pre>";
?>

Ekran görüntüsü aşağıdaki gibi olacaktır. Yapıyı daha net görebilmeniz için <pre> </pre> etiketleri arasında yazdırdım.

Array
(
    [0] => Array
        (
            [0] => ali
            [1] => hasan
            [2] => veli
        )
    [1] => Array
        (
            [0] => hamit
            [1] => ahmet
            [2] => kemal
        )
    [2] => Array
        (
            [0] => siddik
            [1] => mehmet
        )
)

array_flip()

Dizideki elemanlarla anahtarların yerini değiştirmek için kullanılır.

Örnek kullanım:

Örnekte dizi elemanları ile anahtar kelimelerinin yerlerini değiştirdik.

<?php 
$dizi = array ("ogrenci" => "hasan", "numara" => "412", "cinsiyet" => "erkek");
$sonuc = array_flip($dizi);
echo "<pre>";
print_r ($sonuc);
echo "</pre>";
?>

Ekran görüntüsü aşağıdaki gibi olacaktır.

Array
(
    [hasan] => ogrenci
    [412] => numara
    [erkek] => cinsiyet
)

Dizi Birleştirme

array_merge()

İki veya daha fazla diziyi peş peşe birleştirerek yeni dizi oluşturmak için kullanılır. Burada dikkat edilmesi gerek konu aynı anahtar kelime sahip dizi elemanları öncekinin yerine koyulur yani üzerine yazılır. Eğer dizi anahtarları sayısal ise değerlerin üzerine yazılmaz sona eklenir.

Örnek kullanım:

Örnekde iki diziyi birleştirdik.

<?php 
$dizi1 = array("hasan","ali","veli");
$dizi2= array("ahmet","mehmet","mahmut","salih");
$sonuc = array_merge($dizi1, $dizi2);
print_r ($sonuc);
?>

Ekran görüntüsü Array ( [0] => hasan [1] => ali [2] => veli [3] => ahmet [4] => mehmet [5] => mahmut [6] => salih ) şeklinde olacaktır.

array_combine()

İki farklı diziyi biri anahtar, diğeri veri olacak şekilde birleştirerek yeni dizi oluşturur.

Örnek kullanım:

Örnekte iki dizi tanımladık ve birleştirdik.

<?php 
$dizi1 = array ("ogrenci", "numara", "cinsiyet");
$dizi2 = array ("Mustafa AZAK", "475", "erkek");
$birlestir = array_combine($dizi1, $dizi2);
print_r ($birlestir);
?>

Ekran görüntüsü Array ( [ogrenci] => Mustafa AZAK [numara] => 475 [cinsiyet] => erkek ) şeklinde olacaktır. $dizi1 anahtar $dizi2 değer şeklinde birleştirilmiştir.

Dizi Elemanlarını Sıralama

Fonksiyon Açıklama Kullanım Şekli
asort() Diziyi değerlerine göre sıralar.(A-Z) asort($dizi);
arsort() Diziyi değerlerine göre tersine sıralar.(Z-A) arsort($dizi);
shuffle() Diziyi rastgele sıralar. shuffle($dizi);
ksort() Diziyi anahtara göre sıralar.(A-Z) ksort($dizi);
krsort() Diziyi anahtara göre tersine sıralar.(Z-A) krsort($dizi);

Yukarıdaki tablodakilere benzeyen kısa kullanımlı bir kaç fonksiyon daha var ancak aynı işlemi yaptığı için tabloda yer vermedim. Genel olarak Php Diziler bu kadar tavsiyem kodları kopyala yapıştır yapmadan yazın ve kodları kafanızda yorumlayın. Eğer kodları kafanızda yorumlayarak çalıştırabiliyorsanız bu konuyu ve diğer konuları anladınız demektir.

Daha fazla detay için Php resmi sayfasına göz atabilirsiniz. Php resmi sayfasında bazı yazılar da Türkçe desteği yoktur ancak genel olarak anlatılmak istenileni Google Translate ile anlayabilirsiniz.

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir