Olabildiğince basit tutmaya çalışmama rağmen epeyce uzun bir yazı oldu 🙂 PHP dizilerinde en çok kullanılan fonksiyonları ve mevcut sorunların çözümlerini derledim. Bu makaleyi ara ara güncellemeye devam edeceğim. Az laf çok kod diyip gidiyorum, başka bir makalemde görüşmek üzere 😉
PRINT_R
Dizileri tek seferde ve okunaklı bir şekilde ekrana yazdırmak için kullanılır
<?php $dizi = ["baris","aksu", "kişisel", "blog", "php", "dersleri"]; print_r($dizi) ?>
Çıktı
Array ( [0] => baris [1] => aksu [2] => kişisel [3] => blog [4] => php [5] => dersleri )
VAR_DUMP()
PRINT_R fonksiyonundan farklı olarak dizi hakkında daha fazla bilgi verir
<?php $dizi = ["baris","aksu", "kişisel", "blog", "php", "dersleri", 2019]; var_dump($dizi) ?>
Çıktı
array(7) { [0]=> string(5) "baris" [1]=> string(4) "aksu" [2]=> string(8) "kişisel" [3]=> string(4) "blog" [4]=> string(3) "php" [5]=> string(8) "dersleri" [6]=> int(2019) }
IMPLODE()
IMPLODE fonksiyonu, bir dizinin elemanlarını belirli bir karakterle bölüp, string ifadeye çevirir
<?php $dizi = ["baris","aksu", "kişisel", "blog", "php", "dersleri", 2019]; echo implode(', ', $dizi)."<br />"; echo implode(' - ', $dizi) ?>
Çıktı
baris, aksu, kişisel, blog, php, dersleri, 2019 baris - aksu - kişisel - blog - php - dersleri - 2019
EXPLODE()
Elinizdeki string bir ifadeyi belirttiğiniz karakterden itibaren bölerek bir dizi haline getirir.
2 Parametre alır, ilk parametre bölme işleminin başlatılacağı karakter, 2. parametre ise string ifadenin bulunduğu değişkeni alır.
<?php $string = "PHP Programlama Dili Dersleri 2019"; print_r(explode(" ", $string)); ?>
Çıktı
Array ( [0] => PHP [1] => Programlama [2] => Dili [3] => Dersleri [4] => 2019 )
COUNT()
Dizinin içindeki eleman sayısını verir
<?php $dizi = ["baris","aksu", "kişisel", "blog", "php", "dersleri", 2019]; echo count($dizi); ?>
Çıktı
7
IS_ARRAY()
Bir değişkenin dizi olup olmadığını bildirir. Eğer değişken bir dizi tutuyorsa ekrana bir yazdırır, eğer dizi dışında başka bir ifade tutuyorsa ekranda hiç bir şey yazmaz, yani 0’dır. Koşullu yapılarda kullanılır.
<?php $dizi = ["baris","aksu", "kişisel", "blog", "php", "dersleri", 2019]; echo is_array($dizi); ?>
Çıktı
1
SHUFFLE()
Dizi elemanlarını rastgele sıralar-değiştirir. Çekiliş sistemlerinde bu yapıyı kullanabilirsiniz
<?php $dizi = ["baris","aksu", "kişisel", "blog", "php", "dersleri", 2019]; shuffle($dizi); print_r($dizi); ?>
Çıktı
Array ( [0] => aksu [1] => dersleri [2] => 2019 [3] => php [4] => blog [5] => kişisel [6] => baris )
ARRAY_COMBINE()
Elinizdeki iki farklı diziyi ANAHTAR + DEĞER olarak birleştirir. Daha açıklayıcı olması açısından; anahtarların tutulduğu bir diziyle, değerlerin tutulduğu bir diziyi anahtar => değer ilişkisiyle birleştirir.
<?php $dizi1 = ["AD", "SOYAD", "YAŞ", "AÇIKLAMA"]; $dizi2 = ["Barış", "AKSU", 22, "PHP'de en çok kullanılan dizi fonksiyonları dersi"]; $sonuc = array_combine($dizi1, $dizi2); print_r($sonuc); ?>
Çıktı
Array ( [AD] => Barış [SOYAD] => AKSU [YAŞ] => 22 [AÇIKLAMA] => PHP'de en çok kullanılan dizi fonksiyonları dersi )
ARRAY_COUNT_VALUES()
Dizideki elemanların kaç kez tekrarlandığını bildirir
<?php $dizi = ["barış", "aksu", "blog","barış", "blog"]; print_r(array_count_values($dizi)) ?>
Çıktı
Array ( [barış] => 2 [aksu] => 1 [blog] => 2 )
ARRAY_FLIP()
Anahtar ile değerlerin yerlerini değiştirir. Yani anahtarlar değer, değerler anahtar olur.
<?php $dizi = [ "AD" => "Barış", "SOYAD" => "AKSU", "WEBSITE" => "https://barisaksu.com/" ]; print_r(array_flip($dizi)) ?>
Çıktı
Array ( [Barış] => AD [AKSU] => SOYAD [https://barisaksu.com/] => WEBSITE )
ARRAY_KEY_EXIST()
Belirtilen anahtarın dizinin içerisinde olup olmadığını sorgular
<?php $dizi = [ "AD" => "Barış", "SOYAD" => "AKSU", "WEBSITE" => "https://barisaksu.com/" ]; echo array_key_exists("AD", $dizi) ?>
Çıktı
1
Tabi bu yapıyı iç içe dizilerde kullanmaya çalışırsanız, false döndürdüğünü görürsünüz. Bunun için bir fonksiyon yazmamız gerekiyor.
<?php function array_key_exists_all($anahtar, $diziAdi){ foreach($diziAdi as $indis => $deger){ if($indis == $anahtar){ return true; } if(is_array($deger)){ return array_key_exists_all($anahtar, $deger); } } return false; }; $dizi = [ "AD" => "Barış", "SOYAD" => "AKSU", "WEBSITE" => "https://barisaksu.com/", "YETENEKLER" => [ "A" => "PHP", "B" => "PYTHON", "C" => "HTML + CSS" ] ]; echo array_key_exists_all("A", $dizi); ?>
ARRAY_MAP()
Dizideki her elemanı tek tek alarak işlem yapar
<?php $dizi = ["barış", "aksu", "2019"]; function fonksiyonAdi($item){ return $item." kişisel blog"; } $aM = array_map("fonksiyonAdi", $dizi); print_r($aM) ?>
VEYA
<?php $dizi = ["barış", "aksu", "2019"]; $aM = array_map(function($item){ return $item." kişisel blog"; }, $dizi); print_r($aM) ?>
Çıktı
Array ( [0] => barış kişisel blog [1] => aksu kişisel blog [2] => 2019 kişisel blog )
ARRAY_FILTER()
Dizideki her elemanı tek tek işler ve istenilen fonksiyon’dan geçirerek süzer
<?php $dizi = ["barış", "aksu", "2019"]; function fonksiyonAdi($item){ return $item == "barış"; } $aF = array_filter($dizi,"fonksiyonAdi"); print_r($aF) ?>
VEYA
<?php $dizi = ["barış", "aksu", "2019"]; $aF = array_filter($dizi, function($item){ return $item == "barış"; }); print_r($aF) ?>
Çıktı
Array ( [0] => barış )
ARRAY_MERGE()
İki veya daha fazla diziyi birleştirmek için kullanılır
<?php $dizi = ["barış", "aksu"]; $dizi2 = ["kişisel", "blog"]; $dizi3 = ["2019", "php", "dersleri"]; $aM = array_merge($dizi, $dizi2, $dizi3); print_r($aM) ?>
Çıktı
Array ( [0] => barış [1] => aksu [2] => kişisel [3] => blog [4] => 2019 [5] => php [6] => dersleri )
ARRAY_RAND()
Dizi içerisinden rastgele değer seçmek için kullanılır
<?php $dizi = ["barış", "aksu", "kişisel", "blog", "programlama", "dersleri"]; $aR = array_rand($dizi, 2); print_r($aR) ?>
Çıktı
Array ( [0] => 0 [1] => 4 )
Gördüğünüz gibi seçtiği değerlerin anahtarını döndürdü. Eğer istersek array_map fonksiyonu ile verdiği değerleri direkt dizi elemanına çevirebiliriz.
<?php $dizi = ["barış", "aksu", "kişisel", "blog", "programlama", "dersleri"]; $aR = array_rand($dizi, 2); $aM = array_map(function($cevir) use ($dizi){ return $dizi[$cevir]; }, $aR); print_r($aM) ?>
Çıktı
Array ( [0] => aksu [1] => programlama )
ARRAY_REVERSE()
Dizi elemanlarını tersten sıralar
<?php $dizi = ["barış", "aksu", "kişisel", "blog", "programlama", "dersleri"]; $aR = array_reverse($dizi); print_r($aR) ?>
Çıktı
Array ( [0] => dersleri [1] => programlama [2] => blog [3] => kişisel [4] => aksu [5] => barış )
ARRAY_SEARCH()
Dizide bir eleman aramak için kullanılır, bulunması durumunda elemanın anahtar değerini döndürür.
<?php $dizi = ["barış", "aksu", "kişisel", "blog", "programlama", "dersleri"]; $aS = array_search("programlama", $dizi); print_r($aS) ?>
Çıktı
4
Ancak bu yapı array_key_exist() fonksiyonunda olduğu gibi iç içe dizilerde çalışmamaktadır. Bunun için ise şöyle bir fonksiyon yazıyoruz.
<?php function bul($anahtar, $diziAdi){ static $yeniDizi = []; foreach ($diziAdi as $indis => $deger) { if (is_array($deger)) { $yeniDizi[] = $indis; return bul($anahtar, $deger); } else { if ($deger == $anahtar) { $yeniDizi[] = $indis; } } } return $yeniDizi; }; $dizi = [ "a" => "adana", "i" => "istanbul", "b" => [ "bursa", "balıkesir" ] ]; $yeniDizi = bul("balıkesir", $dizi); print_r($yeniDizi) ?>
IN_ARRAY()
array_search() fonksiyonuyla aynı işi yapar, sonucu true veya false olarak döndürür.
<?php $dizi = [ "a" => "adana", "i" => "istanbul", "b" => [ "bursa", "balıkesir" ] ]; print_r(in_array("bursa", $dizi)) ?>
Çıktı
1
Yine bu fonksiyonda iç içe dizilerde çalışmamaktadır bunun içinde bir fonksiyon yazıyoruz
<?php function in_array_all($eleman, $diziAdi, $bool = false){ foreach ($diziAdi as $item) { if (($bool ? $item === $eleman : $item == $eleman) || (is_array($item) && in_array_all($eleman, $item, $bool))) { return true; } } return false; } $dizi = [ "a" => "adana", "i" => "istanbul", "b" => [ "bursa", "balıkesir" ] ]; echo in_array_all("bursa", $dizi) ? true : false; ?>
ARRAY_SHIFT()
Dizinin ilk (0) elemanını seçer, siler / çıkartır
<?php $dizi = [ "a" => "adana", "i" => "istanbul", "b" => [ "bursa", "balıkesir" ] ]; $secVeSil = array_shift($dizi); echo "Seçilen eleman:". $secVeSil . "<br />"; print_r($dizi) ?>
Çıktı
Seçilen eleman:adana Array ( [i] => istanbul [b] => Array ( [0] => bursa [1] => balıkesir ) )
ARRAY_UNSHIFT()
Dizinin başına yeni bir eleman ekler
<?php $dizi = ["barış", "aksu", "kişisel", "blog", "php", "dizi fonksiyonları", "dersi", 2019]; $basaEkle = array_unshift($dizi, "php programlama dili"); echo "Seçilen eleman:". $basaEkle . "<br />"; print_r($dizi) ?>
Çıktı
Seçilen eleman:9 Array ( [0] => php programlama dili [1] => barış [2] => aksu [3] => kişisel [4] => blog [5] => php [6] => dizi fonksiyonları [7] => dersi [8] => 2019 )
Çıktının 9 olmasının sebebi, 9. eleman olmasıdır, anahtar sonucunu döndürmüyor. Eğer eklediğimiz elemanın anahtarını belirtmek istersek bir değişkene aktarmamız gerekiyor. (array_merge() kullanımına dikkat!)
<?php $dizi = ["barış", "aksu", "kişisel", "blog", "php", "dizi fonksiyonları", "dersi", 2019]; $ekle["ders"] = "php programlama dili"; $dizi = array_merge($ekle, $dizi); print_r($dizi) ?>
Çıktı
Array ( [ders] => php programlama dili [0] => barış [1] => aksu [2] => kişisel [3] => blog [4] => php [5] => dizi fonksiyonları [6] => dersi [7] => 2019 )
ARRAY_POP()
Dizinin son elemanını seçer, siler / çıkartır
<?php $dizi = ["barış", "aksu", "kişisel", "blog", "php", "dizi fonksiyonları", "dersi", 2019]; $secVeSil = array_pop($dizi); echo "Seçilen eleman:". $secVeSil . "<br />"; print_r($dizi) ?>
Çıktı
Seçilen eleman:2019 Array ( [0] => barış [1] => aksu [2] => kişisel [3] => blog [4] => php [5] => dizi fonksiyonları [6] => dersi )
ARRAY_PUSH()
Dizinin sonuna yeni bir eleman ekler
<?php $dizi = ["barış", "aksu", "kişisel", "blog", "php", "dizi fonksiyonları", "dersi", 2019]; array_push($dizi, "kişisel blog"); print_r($dizi) ?>
Çıktı
Array ( [0] => barış [1] => aksu [2] => kişisel [3] => blog [4] => php [5] => dizi fonksiyonları [6] => dersi [7] => 2019 [8] => kişisel blog )
Eğer birden fazla eleman eklemek isterseniz aşağıdaki gibi kullanabilirsiniz
<?php $dizi = ["barış", "aksu", "kişisel", "blog", "php", "dizi fonksiyonları", "dersi", 2019]; array_push($dizi, "php", "merhaba", "dünya"); print_r($dizi) ?>
Çıktı
Array ( [0] => barış [1] => aksu [2] => kişisel [3] => blog [4] => php [5] => dizi fonksiyonları [6] => dersi [7] => 2019 [8] => php [9] => merhaba [10] => dünya )
Eğer isterseniz dizi sonuna bu fonksiyonu kullanmadan da eleman ekleyebilirsiniz
<?php $dizi = ["barış", "aksu", "kişisel", "blog", "php", "dizi fonksiyonları", "dersi", 2019]; $dizi[] = "php programalama dili"; print_r($dizi) ?>
Çıktı
Array ( [0] => barış [1] => aksu [2] => kişisel [3] => blog [4] => php [5] => dizi fonksiyonları [6] => dersi [7] => 2019 [8] => php programalama dili )
Yine fonksiyonsuz kullanımda yeni değeri anahtarıyla birlikte ekleyebilirsiniz
<?php $dizi = ["barış", "aksu", "kişisel", "blog", "php", "dizi fonksiyonları", "dersi", 2019]; $dizi["dersAdi"] = "php programalama dili"; print_r($dizi) ?>
Çıktı
Array ( [0] => barış [1] => aksu [2] => kişisel [3] => blog [4] => php [5] => dizi fonksiyonları [6] => dersi [7] => 2019 [dersAdi] => php programalama dili )
ARRAY_SLICE()
Dizide belirli bir aralığı seçmek için kullanılır
<?php $dizi = ["barış", "aksu", "kişisel", "blog", "php", "dizi fonksiyonları", "dersi", 2019]; #3'üncü elemandan başla ve sonrakileri dahil et print_r(array_slice($dizi, 3)); #3'üncü elemandan başla ve en fazla 4 eleman döndür print_r(array_slice($dizi, 3, 4)) ?>
Çıktı
Array #3'üncü elemandan başla ve sonrakileri dahil et ( [0] => blog [1] => php [2] => dizi fonksiyonları [3] => dersi [4] => 2019 ) Array #3'üncü elemandan başla ve en fazla 4 eleman seç/döndür ( [0] => blog [1] => php [2] => dizi fonksiyonları [3] => dersi )
ARRAY_SUM()
Dizi içerisindeki elemanların toplamını verir
<?php $sayisalDizi = [5, 4, 8, 52, 10]; echo array_sum($sayisalDizi) ?>
Çıktı
79
ARRAY_PRODUCT()
Dizi içerisindeki elemanların çarpımını verir
<?php $sayisalDizi = [5, 4, 8, 52, 10]; echo array_product($sayisalDizi) ?>
Çıktı
83200
ARRAY_UNIQUE()
Dizide tekrar eden elemanları siler
<?php $dizi = ["barış", "blog", "kişisel", "blog", "php", "dizi fonksiyonları", "php"]; print_r(array_unique($dizi)) ?>
Çıktı
Array ( [0] => barış [1] => blog [2] => kişisel [4] => php [5] => dizi fonksiyonları )
ARRAY_VALUES()
Mevcut dizideki anahtar değerlerini sıfırlar. Yukarıda array_unique() fonksiyonu ile tekrar eden elemanları temizleyince çıktıdaki dizi anahtarlarının 0, 1, 2, 4, 5 olarak göründüğünü fark etmişsinizdir.
Örneğin yukarıdaki çıktıyı array_values() fonksiyonu ile yeniden düzenleyelim
<?php $dizi = ["barış", "blog", "kişisel", "blog", "php", "dizi fonksiyonları", "php"]; $temizle = array_unique($dizi); $duzelt = array_values($temizle); print_r($duzelt) ?>
Çıktı
Array ( [0] => barış [1] => blog [2] => kişisel [3] => php [4] => dizi fonksiyonları )
ARRAY_KEYS()
Dizi anahtarlarını listeler
<?php $dizi = [ "ders" => "Dizi Algoritmaları", "dil" => "PHP", "yazar" => "Barış AKSU" ]; print_r(array_keys($dizi)) ?>
Çıktı
Array ( [0] => ders [1] => dil [2] => yazar )
Yalnız bu fonksiyonda iç içe dizilerde çalışmıyor. Bu yüzden yine bir fonksiyon yazarak bu sorunu aşıyoruz.
<?php function array_keys_all($diziAdi){ static $keys = []; foreach($diziAdi as $anahtar => $deger){ $keys[] = $anahtar; if(is_array($deger)) return array_keys_all($deger); } return $keys; } $dizi = [ "ders" => "Dizi Algoritmaları", "dil" => "PHP", "yazar" => "Barış AKSU", "ogrenciler" => [ "a" => "mehmet", "b" => "mert", "c" => "can" ] ]; print_r(array_keys_all($dizi)) ?>
Çıktı
Array ( [0] => ders [1] => dil [2] => yazar [3] => ogrenciler [4] => a [5] => b [6] => c )
CURRENT()
Dizinin ilk elemanını yazdırır.
<?php $dizi = [ "ders" => "Dizi Algoritmaları", "dil" => "PHP", "yazar" => "Barış AKSU", "ogrenciler" => [ "a" => "mehmet", "b" => "mert", "c" => "can" ] ]; echo current($dizi) ?>
Çıktı
Dizi Algoritmaları
END()
Dizinin son elemanını yazdırır.
<?php $dizi = [ "ders" => "Dizi Algoritmaları", "dil" => "PHP", "yazar" => "Barış AKSU" ]; echo end($dizi); ?>
Çıktı
Barış AKSU
İç içe dizilerde de çalışıyor ama toplu olarak alıyor ve print_r ile kullanmak gerekiyor. Biz yine bu sorunu bir fonksiyon yazarak aşacağız.
<?php function end_all($diziAdi){ static $keys = []; foreach($diziAdi as $anahtar => $deger){ $keys[] = $anahtar; if(is_array($deger)) return end($deger); } return $keys; } $dizi = [ "ders" => "Dizi Algoritmaları", "dil" => "PHP", "yazar" => "Barış AKSU", "ogrenciler" => [ "a" => "mehmet", "b" => "mert", "c" => "can" ] ]; print_r(end_all($dizi)); ?>
Çıktı
can
NEXT() ve PREV()
Dizideki önceki ve sonraki elemanı seçer / bulur (art arda kullanımı mümkün)
<?php $dizi = [ "ders" => "Dizi Algoritmaları", "dil" => "PHP", "yazar" => "Barış AKSU", "ogrenciler" => [ "a" => "mehmet", "b" => "mert", "c" => "can" ] ]; echo next($dizi)."<br />"; echo prev($dizi) ?>
Çıktı
PHP Dizi Algoritmaları
RESET()
next() ve prev() fonksiyonları ile yapılan işlemleri sıfırlar.
<?php $dizi = [ "ders" => "Dizi Algoritmaları", "dil" => "PHP", "yazar" => "Barış AKSU", "ogrenciler" => [ "a" => "mehmet", "b" => "mert", "c" => "can" ] ]; echo next($dizi)."<br />"; echo next($dizi)."<br />"; echo reset($dizi)."<br />"; echo next($dizi) ?>
Çıktı
PHP Barış AKSU Dizi Algoritmaları PHP
EXTRACT()
Dizideki anahtarları değişken olarak atar
<?php $dizi = [ "ders" => "Dizi Algoritmaları", "dil" => "PHP", "yazar" => "Barış AKSU", "ogrenciler" => [ "a" => "mehmet", "b" => "mert", "c" => "can" ] ]; extract($dizi); echo $ders; ?>
Çıktı
Dizi Algoritmaları
ASORT()
Dizi içerisindeki değerlere göre A’dan Z’ye doğru sıralar
<?php $dizi = [ "ders" => "Dizi Algoritmaları", "dil" => "PHP", "yazar" => "Barış AKSU" ]; asort($dizi); print_r($dizi) ?>
Çıktı
Array ( [yazar] => Barış AKSU [ders] => Dizi Algoritmaları [dil] => PHP )
ARSORT()
Dizi elemanlarını Z’den A’ya doğru sıralar
<?php $dizi = [ "ders" => "Dizi Algoritmaları", "dil" => "PHP", "yazar" => "Barış AKSU" ]; arsort($dizi); print_r($dizi) ?>
Çıktı
Array ( [dil] => PHP [ders] => Dizi Algoritmaları [yazar] => Barış AKSU )
KSORT()
Dizi elemanlarını anahtara göre A’dan Z’ye doğru sıralar
<?php $dizi = [ "bicibici" => "adana", "künefe" => "hatay", "cigköfte" => "urfa" ]; ksort($dizi); print_r($dizi) ?>
Çıktı
Array ( [bicibici] => adana [cigköfte] => urfa [künefe] => hatay )
KRSORT()
Dizi elemanlarını anahtara göre Z’den A’ya doğru sıralar
<?php $dizi = [ "bicibici" => "adana", "künefe" => "hatay", "cigköfte" => "urfa" ]; krsort($dizi); print_r($dizi) ?>
Çıktı
Array ( [künefe] => hatay [cigköfte] => urfa [bicibici] => adana )