Bu yazıda PHP dizi fonksiyonları konusunu ayrıntılı ve uygulamalı göreceğiz. Bu içeriği daha fazla uzatmamak adına bazı önemli dizi fonksiyonlarını ayrı içerikler halinde oluşturdum. Aşağıdaki listeden bu fonksiyonlara ulaşabilirsiniz.
Bu yazıda bahsedilen fonksiyonlardan herhangi birine aşağıdaki başlıklara tıklayarak kolay bir şekilde ulaşabilirsiniz.
–>count fonksiyonu
–>array_chunk fonksiyonu – dizide gruplama
–>is_array fonksiyonu – dizi var mı
–>extract fonksiyonu – dizideki elemanları değişken olarak çıkarma
–>compact fonksiyonu – değişkenleri dizi haline getirme
–>list fonksiyonu – dizi verilerini değişkenlere atama
–>array_count_values fonksiyonu – elemanların tekrarlanma sayısı
–>array_flip fonksiyonu – dizide anahtar ile veriyi yer değiştirme
–>print_r fonksiyonu – dizi yazdırma
–>var_dump fonksiyonu – ayrıntılı dizi yazdırma
–>shuffle fonksiyonu – dizi elemanlarını karıştırma
–>array_rand fonksiyonu – diziden rastgele veri çekme
–>array_map fonksiyonu – dizideki elemanlara işlem yaptırma
–>array_filter fonksiyonu – dizi filtreleme
–>array_sum fonksiyonu – sayısal verileri toplama
–>array_product fonksiyonu – sayısal verileri çapma
–>array_change_key_case fonksiyonu – dizi elemanları büyük yada küçük hale getirme
–>array_fill fonksiyonu – diziyi veri ile doldurma
–>array_column fonksiyonu – aynı sütundaki verileri elde etme
PHP dizinin eleman sayısını bulmak için kullanılan fonksiyondur. 2 parametre ile kullanılır. İlk parametresi dizi değişkeni, ikinci parametresi ise elemanları sayılacak dizinin tek boyutlu veya çok boyutlu olduğuna karar verilecek kısımdır. İkinci parametre varsayılan olarak 0 değeri atanmıştır. “0” değeri ile elemanı sayılacak dizinin tek boyutlu olduğu belirtiliyor. “1” yada COUNT_RECURSIVE değeri verilir ise çok boyutlu dizilerin eleman sayısını bulma işlemi gerçekleştirilebiliyor. PHP count fonksiyonu kullanımı aşağıdaki gibidir.
$veriler = array(
'meyve' => array('elma','portakal','greyfurt'),
'ulke' => array(
'Türkiye',
'Pakistan',
'Türk Devletleri' => array(
'Turkmenistan',
'Kazakistan',
'Özbekistan',
'Kırgızistan',
'KKTC'
)
),
'gezegen',
'şehir'
);
echo count($veriler); //çıktı: 4
echo count($veriler,COUNT_RECURSIVE); //çıktı: 15
echo count($veriler,1); //çıktı: 15
Sizeof Fonksiyonu
PHP dizinin eleman sayısını bulmak için kullanılan fonksiyonlardan bir diğeridir. Count fonksiyonu ile aynıdır. Yukarıdaki örnekte count yerine sizeof yazılır ise değişiklik olmayacaktır ve proğram aynı sonuçları verecektir.
echo sizeof($veriler).'
'; //çıktı: 4
echo sizeof($veriler,COUNT_RECURSIVE).'
'; //çıktı: 15
echo sizeof($veriler,1).'
'; //çıktı: 15
PHP dizi gruplama işlemini gerçekleştirir. Dizi içerisinde ayrı ayrı diziler oluşturulup belirtilen sayı kadar bu dizi içerisine elemanlar yerleştirilerek gruplama işlemi gerçekleştirilir.
3 parametre ile kullanılır. İlk parametre dizi değeri, ikinci parametre her grupta kaç eleman olması gerektiğini belirten sayısal değer, üçüncü parametre ise gruplandırılacak elemanların anahtar (indis) değerlerinin muhafaza edilip edilmeyeceğini belirten “true” yada “false” değerleri. Kullanılması zorunlu değildir ve varsayılan olarak “false” değeri atanmıştır.
Dizi gruplama işlemini gerçekleştiren PHP array_chunk fonksiyonu kullanımı aşağıdaki gibidir.
$veriler = array(
'a' => 'Veri 1',
'b' => 'Veri 2',
'c' => 'Veri 3',
'd' => 'Veri 4',
'e' => 'Veri 5'
);
$yeni_dizi = array_chunk($veriler,2);
print_r($yeni_dizi);
/*
--çıktı--
Array (
[0] => Array (
[0] => Veri 1
[1] => Veri 2
)
[1] => Array (
[0] => Veri 3
[1] => Veri 4
)
[2] => Array (
[0] => Veri 5
)
)
*/
$yeni_dizi2 = array_chunk($veriler,2,true);
print_r($yeni_dizi2);
/*
--çıktı--
Array (
[0] => Array (
[a] => Veri 1
[b] => Veri 2
)
[1] => Array (
[c] => Veri 3
[d] => Veri 4
)
[2] => Array (
[e] => Veri 5
)
)
*/
PHP dizi fonksiyonları içerisinde yer alan is_array fonksiyonu değişkenin dizi olup olmadığını kontrol etmek için kullanılır. Değişken dizi değişkeni ise “true” yani 1, değil ise “false” döndürür. PHP is_array fonksiyonu kullanımı aşağıdaki gibidir.
$dizi = array(123,321,'eleman');
echo is_array($dizi);
if (is_array($dizi)){
echo 'Değişken dizidir';
}else{
echo 'Değişken dizi değildir';
}//çıktı: Değişken dizidir
Dizideki elemanları değişken olarak çıkarma işlemini gerçekleştirir. Dizideki elemanların anahtarlarını değişken ismi olarak ayarlayıp, değişkenin değerini elemanın değeri olarak atar. Extract fonksiyonu örnek olarak post yada get işlemi sırasında verileri değişken hale getirmede kullanılabilir. PHP extract fonksiyonu kullanımı aşağıdaki gibidir.
$depolama = array(
'cd' => 'Yaygın olarak 700 MB depolama sunan bir depolama birimidir.',
'dvd' => 'Yaklaşık 4 GB depolama sunan bir depolama birimidir.',
'flash' => 'CD-DVD birimlerine alternatif olarak daha uygun boyutlarda ve daha büyük kapasiteli depolama sunan bir depolama birimidir.'
);
extract($depolama);
echo $cd;
Post işlemi ile veri gönderimi sırasında $_POST değikeninde veriler dizi şeklinde sıralanıyor. Bu dizideki elemanları değişkenler halinde çıkarma işlemi ile ilgili örnek bir uygulamayı da aşağıda görebilirsiniz.
Değişkenleri dizi haline getirme işlemini yapar. Extract fonksiyonunu yaptığının tersini yapar. Compact fonksiyonu içerisine değişkenlerin isimleri yazılır ve değişkenlerin isimleri dizinin elemanlarının anahtarı olarak, değişkenlerin değerleri de bu anahtarların değeri olarak belirlenip bir dizi oluşturulur ve fonksiyondan bu dizi geriye döndürülür. PHP compact fonksiyonu kullanımı aşağıdaki gibidir.
$cd = 'Yaygın olarak 700 MB depolama sunan bir depolama birimidir.';
$dvd = 'Yaklaşık 4 GB depolama sunan bir depolama birimidir';
$flash = 'CD-DVD birimlerine alternatif olarak daha uygun boyutlarda ve daha büyük kapasiteli depolama sunan bir depolama birimidir.';
$dizi = compact('cd','dvd','flash');
print_r($dizi);
/*
Array (
[cd] => Yaygın olarak 700 MB depolama sunan bir depolama birimidir.
[dvd] => Yaklaşık 4 GB depolama sunan bir depolama birimidir
[flash] => CD-DVD birimlerine alternatif olarak daha uygun boyutlarda ve daha büyük kapasiteli depolama sunan bir depolama birimidir.
)
*/
Dizi içerisindeki verileri değişkenlere atama işlemini gerçekleştirir. Döngü içerisinde kullanılması projeye pratiklik kazandırabilir. PHP list fonksiyonu kullanımı aşağıdaki gibidir.
$sehirler = array(
'Konya',
'Antalya',
'Muğla',
'Artvin'
);
list($sehir1,$sehir2,$sehir3,$sehir4) = $sehirler;
echo $sehir1,' - ',$sehir2,' - ',$sehir3,' - ',$sehir4; //çıktı: Konya - Antalya - Muğla - Artvin
while(list($indis,$sehir) = each($sehirler)){
echo $indis,' = ',$sehir,'
';
}
/*
--çıktı--
1 = Antalya
2 = Muğla
3 = Artvin
*/
PHP dizi fonksiyonları içerisinde yer alan array_count_values fonksiyonu dizide elemanların tekrarlanma sayısı sonuçlarını dizi şeklinde döndürür. PHP array_count_values fonksiyonu kullanımı aşağıdaki gibidir.
$yemekler = array(
'Etliekmek',
'Bamya',
'Kuru Fasülye',
'Sarma',
'Etliekmek',
'Dolma',
'Sarma'
);
$veriler = array_count_values($yemekler);
print_r($veriler);
/*
--çıktı--
Array (
[Etliekmek] => 2
[Bamya] => 1
[Kuru Fasülye] => 1
[Sarma] => 2
[Dolma] => 1
)
*/
Arrap_flip fonksiyonu ile dizideki elemanlar ile anahtarları yer değiştirme işlemi yapılabilir. PHP array_flip fonksiyonu kullanımı aşağıdaki gibidir.
$diller = array(
1 => 'Türkçe',
2 => 'Japonca',
3 => 'Arapça',
4 => 'İngilizce',
5 => 'Çince'
);
$yeni_diller = array_flip($diller);
print_r($yeni_diller);
/*
--çıktı--
Array (
[Türkçe] => 1
[Japonca] => 2
[Arapça] => 3
[İngilizce] => 4
[Çince] => 5
)
*/
Daha çok PHP dizileri yazdırma işlemi için kullanılsa da aslında bütün değişkenlerin içeriklerini yazdırmak için kullanılabilen bir fonksiyondur. Print_r fonksiyonu ile tek boyutlu, çift boyutlu, üç boyutlu farketmez dizilerdeki bütün değerleri, anahtarları ve elemanları yazdırma işlemi gerçekleştirilebilir. PHP print_r fonksiyonu kullanımı aşağıdaki gibidir.
$irklar = array(
1 => 'Türk',
2 => 'Arap',
3 => 'Japon',
4 => 'İngiliz',
5 => 'Çinli',
6 => array(
'Moğolca',
'Peştuca',
'Urduca',
'Hintçe'
),
7 => 'İspanyolca'
);
$irk = 'Türk';
print_r($irk); //çıktı: Türk
print_r($irklar);
/*
--çıktı--
Array (
[1] => Türk
[2] => Arap
[3] => Japon
[4] => İngiliz
[5] => Çinli
[6] => Array (
[0] => Moğolca
[1] => Peştuca
[2] => Urduca
[3] => Hintçe
)
[7] => İspanyolca
)*/
PHP dizi fonksiyonları içerisinde bulunan var_dump fonksiyonu değişken ve diziler hakkında bilgi almak, içeriklerini, elemanlarını print_r fonksiyonunda olduğu gibi ayrıntılı görmek gibi işlevleri yerine getirir. Değişkenin boyutu ve içeriği bilgilerini de beraberinde yazdırır. PHP var_dump fonksiyonu kullanımı aşağıdaki gibidir.
$dilveaileleri = array(
'UralAltay' => array(
'Türkçe',
'Moğolca',
'Japonca',
'Korece'
),
'HintAvrupa' => array(
'İngilizce',
'Almanca',
'Farsça',
'Hintçe'
)
);
$dil = 'Türkçe';
var_dump($dil); //çıktı: string 'Türkçe' (length=8)
var_dump($dilveaileleri);
/*
--çıktı--
array (size=2)
'UralAltay' =>
array (size=4)
0 => string 'Türkçe' (length=8)
1 => string 'Moğolca' (length=8)
2 => string 'Japonca' (length=7)
3 => string 'Korece' (length=6)
'HintAvrupa' =>
array (size=4)
0 => string 'İngilizce' (length=10)
1 => string 'Almanca' (length=7)
2 => string 'Farsça' (length=7)
3 => string 'Hintçe' (length=7)
*/
var_dump($dil,$dilveaileleri);
/*
--çıktı--
string 'Türkçe' (length=8)
array (size=2)
'UralAltay' =>
array (size=4)
0 => string 'Türkçe' (length=8)
1 => string 'Moğolca' (length=8)
2 => string 'Japonca' (length=7)
3 => string 'Korece' (length=6)
'HintAvrupa' =>
array (size=4)
0 => string 'İngilizce' (length=10)
1 => string 'Almanca' (length=7)
2 => string 'Farsça' (length=7)
3 => string 'Hintçe' (length=7)
*/
Shuffle fonksiyonu ile dizi elemanlarını karıştırma ve rastgele sıralama işlemlerini gerçekleştirebiliriz. PHP shuffle fonksiyonu kullanımı aşağıdaki gibidir.
$dizi = array(
1 => 'Değer 1',
2 => 'Değer 2',
3 => 'Değer 3',
4 => 'Değer 4'
);
shuffle($dizi);
print_r($dizi);
/*
--çıktı--
Array (
[0] => Değer 2
[1] => Değer 1
[2] => Değer 4
[3] => Değer 3
)
*/
PHP diziden rastgele veri çekme işlemi hazır olarak array_rand fonksiyonu ile gerçekleştirilebilir. 2 parametre ile kullanılır. İlk parametre dizi değeri, ikinci parametre ise diziden kaç veri çekileceğinin belirtildiği sayısal değer. Array_rand fonksiyonu ile belirtilen diziden verilerin anahtarları döndürülür. Bu anahtarlar referans alınarak veriler elde edilir. PHP array_rand fonksiyonu kullanımı aşağıdaki gibidir.
$komsu_ulkeler = array(
'Yunanistan',
'Bulgaristan',
'Gürcistan',
'Ermenistan',
'Nahcıvan - Azerbaycan',
'İran',
'Irak',
'Suriye'
);
$veriler = array_rand($komsu_ulkeler,3);
print_r($veriler);
/*
--örnek çıktı--
Array (
[0] => 4
[1] => 5
[2] => 6
)
*/
echo $veriler[0]; //çıktı: 4
PHP dizi fonksiyonları içerisinde bulunan array_map fonksiyonu belirtilen dizi içerisindeki bütün elemanlara belirtilen fonksiyon ile ayrı ayrı işlem yapılmasını sağlar. Bu fonksiyon hazır PHP fonksiyonu olabildiği gibi özel olarak oluşturulmuş bir fonksiyon da olabilir. Mesela _POST yada _GET işlemiyle birçok veri elde ederken teker teker bu değerleri filtrelemek yerine array_map fonksiyonu ile tek seferde halledilebilir.
Yada bir dizin, klasör içerisindeki bütün resimleri silmek istiyorsak ilk olarak bu dosyaların yolları bir dizi içerisine aktarılır, silme işlemini gerçekleştiren bir fonksiyon oluşturulur ve array_map fonksiyonu ile dizi içerisindeki dosya yolları kullanılarak silme fonksiyonu ile bütün dosyalar silinebilir. PHP array_map fonksiyonu kullanımı aşağıdaki gibidir.
function filtrele($deger){
return str_replace('<',' ',strip_tags(htmlspecialchars(trim($deger))));
}
array_map('filtrele', $_POST);
Yukarıdaki örnekte, POST yöntemiyle gelen değerlere, filtreler ismindeki özel fonksiyon ile filtreleme işlemi yapılıyor.
array_map('unlink', glob('resimler/*'));
Yukarıdaki örnekte ise resimler klasörünün içerisinde bulunan bütün dosyaları, dosya silme işlemini gerçekleştiren hazır PHP fonksiyonu olan unlink fonksiyonu teker teker silme işlemi gerçekleştiriliyor.
Dizideki elemanlar arasında istenilen şartlara uygun verilerin döndürülmesini yani PHP dizi filtreleme işlemini gerçekleştirir. 2 parametre ile kullanılabilir. İlk parametre dizi değeri, ikinci parametre ise şart kodlarının çalıştırıldığı fonksiyon tanımlaması.
Array_filter fonksiyonu kullanımı tek parametre ile gerçekleşirse ilk parametreye girilen dizideki boş olan bütün elemanları siler.
$dizi = array('bir', 'iki', '');
print_r($dizi); //Array ( [0] => bir [1] => iki [2] => )
echo '
';
echo count($dizi); //3
echo '
';
print_r(array_filter($dizi)); //Array ( [0] => bir [1] => iki )
echo '
';
echo count(array_filter($dizi)); //2
Array_filter fonksiyonunun 2 parametresinin de kullanılması aşağıdaki gibidir.
$dizi = array('Metinsel değer',3,5,'Metinsel değer 2',15,25);
$yeni_dizi = array_filter($dizi, function ($eleman) {
return is_numeric($eleman) && $eleman < 10;
});
print_r($yeni_dizi);
/*
--çıktı--
Array (
[1] => 3
[2] => 5
)
*/
Yukarıdaki işlemde, dizi içerisinde sayı olanları ve bu sayıların 10 dan küçük olanları döndür şartı ile dizideki elemanları getiriyoruz ve print_r fonksiyonu ile bu verileri ekrana yazdırıyoruz. Aşağıdaki gibi ayrı olarak özel fonksiyon hazırlayıp, bu fonksiyonu array_filter fonksiyonuna tanıtmak yoluyla da işlemi gerçekleştirebiliriz.
function filtre($eleman){
return is_numeric($eleman) && $eleman < 10;
}
$dizi = array('Metinsel değer',3,5,'Metinsel değer 2',15,25);
$yeni_dizi = array_filter($dizi, 'filtre');
print_r($yeni_dizi);
/*
--çıktı--
Array (
[1] => 3
[2] => 5
)
*/
Dizi içerisinde sayısal verileri toplama işlemini gerçekleştirir ve sonucu geri döndürür. Dizi içerisinde metinsel ifadeler olsa bile bu ifadeleri atlar ve dizideki sayısal değerlerle ilgilenir. PHP array_sum fonksiyonu kullanımı aşağıdaki gibidir.
$veriler = array(
'Metin1',
10,
15,
'Metin2',
10
);
$toplam = array_sum($veriler);
echo $toplam; //çıktı: 35
Dizi içerisindeki sayısal verilerle çarpma işlemi gerçekleştiren ve sonucu geri döndüren hazır PHP fonksiyonudur. Dizi değerlerinin hepsinin sayısal olması gerekir. Aksi taktirde çarpma işlemi başarıyla yapılamaz. PHP array_product fonksiyonu kullanımı aşağıdaki gibidir.
$veriler = array(
3,
5,
2
);
$carp = array_product($veriler);
echo $carp; //çıktı: 30
Dizideki elemanların metinsel anahtarların (indis) küçük harfli ya da büyük harfli olmasını sağlayan harf büyüklüğünü düzenler. Sayısal anahtarlarla ilgilenmez. 2 parametre ile kullanılabilir. İlk parametre dizi değeri, ikinci parametre ise dizi elemanlarının büyük yada küçük olmasının belirtildiği değerler. 2. parametre zorunlu değil ve varsayılan değer olarak 0 yani küçük hale getirme işlemi uygulanır.
2. parametrede kullanılabilecek
değerler
1 = CASE_LOWER – Harfleri küçük
hale getirir.
2 = CASE_UPPER – Harfleri büyük
hale getirir.
PHP array_change_key_case kullanımı aşağıdaki gibidir.
$dizi = array(
'a' => 'Birinci Veri',
'B' => 'İkinci Veri',
1 => 'Üçüncü Veri',
2 => 'Dördüncü Veri',
'c' => 'Beşinci Veri',
'Veri' => 'Altıncı Veri',
);
$yeni_dizi = array_change_key_case($dizi, CASE_UPPER);
print_r($yeni_dizi);
/*
--çıktı--
Array (
[A] => Birinci Veri
[B] => İkinci Veri
[1] => Üçüncü Veri
[2] => Dördüncü Veri
[C] => Beşinci Veri
[VERI] => Altıncı Veri
)
*/
$yeni_dizi2 = array_change_key_case($dizi, CASE_LOWER);
print_r($yeni_dizi2);
/*
--çıktı--
Array (
[a] => Birinci Veri
[b] => İkinci Veri
[1] => Üçüncü Veri
[2] => Dördüncü Veri
[c] => Beşinci Veri
[veri] => Altıncı Veri
)
*/
Bir dizi oluşturur ve diziyi belirtilen değer ile doldurur ve oluşturulan diziyi geri döndürür. 3 parametre ile kullanılır. İlk parametre oluşturulacak dizinin kaçıncı sıradan itibaren doldurulacağını belirten sayı değeri, ikinci parametre kaç tane veri ekleneceğinin belirtildiği sayı değeri, üçüncü parametre ise dizinin doldurulacağı veri değeri. PHP array_fill fonksiyonu kullanımı aşağıdaki gibidir.
$dizi = array_fill(6,2,'gez');
print_r($dizi); //çıktı: Array ( [6] => gez [7] => gez )
2 boyutlu bir dizi gibi sütun ve satır yapısına sahip bir dizi içerisinde aynı sütun üzerinde yer alan verileri elde etmek için kullanılan fonksiyondur. 3 parametre ile kullanılır. İlk parametre dizi değeri, ikinci parametre ise dizi içerisindeki anahtar değeri yani sütun ismi. Üçüncü parametre ise isteğe bağlıdır ve içerisine girilen dizideki sütun değerine göre ikinci parametredeki verileri gruplar, dizi halinde döndürür. PHP array_column fonksiyonu kullanımı aşağıdaki gibidir.
$uyeler = array(
array(
'id' => 11,
'isim' => 'Muhammed',
'soy_isim' => 'Yaman',
'yas' => 22,
),
array(
'id' => 12,
'isim' => 'Ali',
'soy_isim' => 'Yaman',
'yas' => 18,
),array(
'id' => 13,
'isim' => 'Veli',
'soy_isim' => 'Yaman',
'yas' => 17,
)
);
$veriler1 = array_column($uyeler, 'isim');
print_r($veriler1);
/*
--çıktı--
Array (
[0] => Muhammed
[1] => Ali
[2] => Veli
)
*/
$veriler2 = array_column($uyeler, 'isim','id');
print_r($veriler2);
/*
--çıktı--
Array (
[11] => Muhammed
[12] => Ali
[13] => Veli
)
*/