Merhaba arkadaşlar, bu makalede sizlere PHP’de diziler’de sıkça kullanılan dizi fonksiyonlarından bahsetmek istiyorum. Mümkün olduğunca örneklerle ve fonksiyonların eksik kaldığı yerlerde kendimce çözümlerle sizlere bu dizi mevzusunu aktaracağım. Şimdiden iyi okumalar ????
PRİNT_R()
Bir değişkenin depoladığı herşeyi okunabilir bir şekilde bize çıktısını verir.
$arr = [ 'ad' => 'tayfun', 'soyad' => 'erbilen', 'yas' => 24 ]; print_r($arr);
VAR_DUMP()
Bir değişkenin depoladığı herşeyi daha detaylı olarak programlamatik bir şekilde bize çıktısını verir.
$arr = [ 'ad' => 'tayfun', 'soyad' => 'erbilen', 'yas' => 24 ]; var_dump($arr); /* array(3) { ["ad"]=> string(6) "tayfun" ["soyad"]=> string(7) "erbilen" ["yas"]=> int(24) } */
EXPLODE()
Bir ifadeyi belli bir karakterden parçalayarak dizi haline getirmek için kullanılır.
$string = 'tayfun|erbilen|24'; $arr = explode('|', $string); print_r($arr); /* Array ( [0] => tayfun [1] => erbilen [2] => 24 ) */
İMPLODE()
Bir diziyi belli bir karakter ile string ifadeye döndürmek için kullanılır.
$arr = ['tayfun', 'erbilen']; echo implode(', ', $arr); // Çıktı: tayfun, erbilen
COUNT()
Dizinin toplam eleman sayısını bulmak için kullanılır.
$arr = ["tayfun","erbilen"]; echo count($arr); // Çıktı: 2
İS_ARRAY()
Bir değerin dizi olup olmadığını anlamamızı sağlar.
$arr = ['tayfun']; if (is_array($arr)){ echo 'bu bir dizidir'; }
SHUFFLE()
Dizi elemanlarını rasgele sıralamak için kullanılır.
$arr = ["tayfun","erbilen","ahmet","abi"]; shuffle($arr); // rasgele sırala print_r($arr);
ARRAY_COMBİNE()
İki farklı diziyi anahtar-değer olarak birleştirmek için kullanılır.
$arr1 = ["ad","soyad"]; $arr2 = ["tayfun","erbilen"]; $arr3 = array_combine($arr1, $arr2); print_r($arr3);
ARRAY_COUNT_VALUES()
Dizideki elemanların kaç kez tekrarlandığını öğrenmek için kullanılır.
$arr = ["tayfun","erbilen","tayfun","ahmet","abi","ahmet"]; $arr2 = array_count_values($arr); print_r($arr2);
ARRAY_FLİP()
Anahtarlar ile değerlerin yerlerini değiştitmek için kullanılır.
$arr = [ 'ad' => 'tayfun', 'soyad' => 'erbilen' ]; $arr2 = array_flip($arr); print_r($arr2);
ARRAY_KEY_EXİSTS()
Dizi içinde belirlediğimiz anahtarın olup olmadığının kontrolü için kullanılır.
$arr = [ 'ad' => 'tayfun' ]; if (array_key_exists('ad', $arr)){ echo 'ad değeri bu dizide bulunuyor'; } else { echo 'aradığınız değer dizide bulunamadı!'; }
Bu fonksiyon ile iç içe dizilerde doğru sonucu alamıyoruz. Bu yüzden kendimiz basit bir recursive fonksiyon yazabiliriz;
function _array_key_exists($cur_key, $arr){ foreach ($arr as $key => $val){ if ($key == $cur_key){ return true; } if (is_array($val)){ return _array_key_exists($cur_key, $val); } } return false; } $arr = [ 'ad' => 'tayfun', 'soyad' => 'erbilen', 'a' => [ 'b' => [ 'c' => 'd' ] ] ]; echo _array_key_exists('c', $arr); // Çıktı: 1
ARRAY_MAP()
Dizideki her elemanı tek tek alarak işlem yapmak için kullanılır.
function arr_filtre($item){ return $item * 2; } $arr = [1,2,3,4,5]; $arr = array_map('arr_filtre', $arr); print_r($arr); /* Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 ) */
Bu işlemi aynı zamanda anonim fonksiyon olarakta yapabilirsiniz.
$arr = [1,2,3,4,5];
$arr = array_map(function($item){
return $item * 2;
}, $arr);
ARRAY_FİLTER()
Dizideki her elemanı tek tek alarak işlem yapmak için kullanılır. Geriye ise filtrelenmiş bir dizi döner.
$arr = [2, 3, 4, 5]; array_filter($arr, function ($a) { return $a > 2 && $a < 5; }); /* Array ( [1] => 3 [2] => 4 ) */
ARRAY_MERGE()
Dizileri birleştirmek için kullanılır.
$arr1 = ["tayfun","erbilen"]; $arr2 = ["ahmet","abi"]; $arr = array_merge($arr1, $arr2); print_r($arr); /* Array ( [0] => tayfun [1] => erbilen [2] => ahmet [3] => abi ) */
ARRAY_RAND()
Dizi değerlerinden rasgele değer seçmek için kullanılır.
$arr = ["tayfun","erbilen","ahmet","abi"]; $random = array_rand($arr, 2); // 2 tane print_r($random);
Bu fonksiyon bize dizi içerisindeki rasgele 2 elemanın anahtar değerlerini döndürecek. Bunu direk dizi elemanlarına çevirmek için array_map() fonksiyonu ile birlikte kullanabiliriz.
$arr = ["tayfun","erbilen","ahmet","abi"]; $random = array_rand($arr, 2); // 2 tane $items = array_map(function($index) use ($arr){ return $arr[$index]; }, $random); print_r($items);
ARRAY_REVERSE()
Dizi elemanlarını tersten sıralamak için kullanılır.
$arr = ["tayfun","erbilen"]; $reverse_arr = array_reverse($arr); print_r($reverse_arr); /* Array ( [0] => erbilen [1] => tayfun ) */
ARRAY_SEARCH()
Dizide değer aramak için kullanılır değer varsa geriye değerin anahtarı döndürülür.
$arr = [ 'ad' => 'tayfun', 'soyad' => 'erbilen' ]; $test = array_search('erbilen', $arr); echo $test; // Çıktı: soyad
Ancak bu fonksiyon iç içe dizilerde çalışmamaktadır. Bunun için kendimiz basit bir recursive fonksiyon hazırlayabiliriz.
function find($cur_val, $arr) { static $keys = []; foreach ($arr as $key => $val){ if (is_array($val)){ $keys[] = $key; return find($cur_val, $val); } else { if ($val == $cur_val) $keys[] = $key; } } return $keys; } $arr = [ 'ad' => 'tayfun', 'soyad' => 'erbilen', 'yetenekler' => [ 'bisiklet', 'motor', 'a' => [ 'ahmet', 'abi' ] ] ]; $keys = find('ahmet', $arr); print_r($keys); /* Array ( [0] => yetenekler [1] => a [2] => 0 ) */
İN_ARRAY()
array_search() ile aynı mantıkta ve yetersizlikte çalışır. Tek farkı bu sadece olup olmadığını kontrol eder, varsa 1 yoksa 0 değerini döndürür.
$arr = ['tayfun','erbilen']; echo in_array('erbilen', $arr);
ARRAY_SHİFT()
Dizinin ilk elemanını seçip çıkartmak için kullanılır.
$arr = [ 'ad' => 'tayfun', 'soyad' => 'erbilen' ]; $first_value = array_shift($arr); echo $first_value; // Çıktı: tayfun print_r($arr);
ARRAY_POP()
Dizinin son elemanını seçip çıkartmak için kullanılır.
$arr = [ 'ad' => 'tayfun', 'soyad' => 'erbilen' ]; $last_value = array_pop($arr); echo $last_value; // Çıktı: erbilen print_r($arr);
ARRAY_SLİCE()
Dizinin belli bir aralığını seçmek için kullanılır.
$arr = [1,2,3,4,5]; // ilk 2 eleman hariç hepsi $arr2 = array_slice($arr,2); print_r($arr2); // 3'den başla 2 eleman seç $arr3 = array_slice($arr, 2, 2); print_r($arr3); /* Array ( [0] => 3 [1] => 4 ) */ // son 2 eleman $arr4 = array_slice($arr, -2); print_r($arr4);
ARRAY_SUM()
Dizi değerlerinin toplamını bulmak için kullanılır.
$arr = [1,2,3,4,5]; $total = array_sum($arr); echo $total; // Çıktı: 15
ARRAY_PRODUCT()
Dizi değerlerinin çarpımını bulmak için kullanılır.
$arr = [1,2,3,4,5]; $product = array_product($arr); echo $product; // Çıktı: 120
ARRAY_UNİQUE()
Dizide tekrarlanan değerleri silmek için kullanılır.
$arr = ['tayfun','erbilen','tayfun','ahmet','tayfun']; $arr2 = array_unique($arr); print_r($arr2); /* Array ( [0] => tayfun [1] => erbilen [3] => ahmet ) */
ARRAY_VALUES()
Mevcut dizide anahtarlar varsa onları kaldırarak yeni bir dizi haline getirir. Bu fonksiyon aynı zamanda anahtar değerlerini yeniden düzenlemek içinde kullanılır. Örneğin yukarıdaki örnekte tekrarlananlar çıkınca dizi 0-1-3 şeklinde anahtar değerleri gözüktü. Bu fonksiyondan geçirerek bunu düzeltebiliriz.
$arr = [ 'ad' => 'tayfun', 'soyad' => 'erbilen' ]; $arr2 = array_values($arr); print_r($arr2); /* Array ( [0] => tayfun [1] => erbilen ) */
ARRAY_PUSH()
Dizinin sonuna yeni bir eleman eklemek için kullanılır.
$arr = ["tayfun","erbilen"]; array_push($arr, 'ahmet'); print_r($arr); /* Array ( [0] => tayfun [1] => erbilen [2] => ahmet ) */
Birden fazla eklemek isterseniz;
array_push($arr, 'ahmet', 'abi', 'test');
Ayrıca bu fonksiyonu kullanmadan şu şekilde de diziye ekleme yapabiliriz.
$arr = ["tayfun","erbilen"]; $arr[] = 'ahmet'; print_r($arr);
Bu fonksiyon ile anahtarlı bir dizi değeri ekleyemiyoruz. Anahtarlı dizi değeri eklemek istersek;
$arr = ["tayfun","erbilen"]; $arr['ad'] = 'ahmet'; print_r($arr);
ARRAY_UNSHİFT()
Dizinin başına yeni eleman eklemek için kullanılır.
$arr = ["tayfun","erbilen"]; array_unshift($arr, 'ahmet'); print_r($arr); /* Array ( [0] => ahmet [1] => tayfun [2] => erbilen ) */
Bu fonksiyonda da yine başa eklerken anahtar ile ekleyemiyoruz. Eğer başa anahtarla eklemek istersek;
$arr = ["tayfun","erbilen"]; $arr2['ad'] = 'ahmet'; $arr = array_merge($arr2, $arr); print_r($arr);
ARRAY_KEYS()
Dizinin anahtarlarını listelemek için kullanılır.
$arr = [ 'ad' => 'tayfun', 'soyad' => 'erbilen' ]; $keys = array_keys($arr); print_r($keys); /* Array ( [0] => ad [1] => soyad ) */
Bu fonksiyon ile iç içe bir dizide tüm anahtarları alamıyoruz. Bunun için kendimiz şöyle bir fonksiyon yazabiliriz;
function all_array_keys($arr) { static $keys = []; foreach ($arr as $key => $val){ $keys[] = $key; if (is_array($val)) return all_array_keys($val); } return $keys; } $arr = [ 'ad' => 'tayfun', 'soyad' => 'erbilen', 'a' => [ 'b' => 'c', 'd' => [ 'e' => 'f' ] ] ]; $keys = all_array_keys($arr); print_r($keys); /* Array ( [0] => ad [1] => soyad [2] => a [3] => b [4] => d [5] => e ) */
CURRENT()
Dizideki ilk elemanı bulmak için kullanılır.
$arr = ['tayfun', 'erbilen']; echo current($arr); // Çıktı: tayfun
END()
Dizinin son elemanını seçmek için kullanılır.
$arr = ['tayfun', 'erbilen', 'ahmet']; echo end($arr); // Çıktı: ahmet
Not: PHP’nin eski sürümlerinde doğrudan echo ile ekrana yazdırmak hata verebiliyor. Öyle bir durumda değişkene aktarıp değişkeni ekrana yazdırırsanız sorun düzelecektir.
NEXT() – PREV()
Dizide önceki ve sonraki elemanları bulmak için kullanılır.
$arr = ['tayfun', 'erbilen', 'ahmet', 'abi', 'test']; echo next($arr); // Çıktı: erbilen
Ayrıca bunu birden fazla kez kullanarak elemanları seçebilirsiniz.
$arr = ['tayfun', 'erbilen', 'ahmet', 'abi', 'test']; echo next($arr); // Çıktı: erbilen echo next($arr); // Çıktı: ahmet echo next($arr); // Çıktı: abi
Öncekini bulmak için ise;
$arr = ['tayfun', 'erbilen', 'ahmet', 'abi', 'test']; echo next($arr); // Çıktı: erbilen echo prev($arr); // Çıktı: tayfun
Bunda da yine birden fazla kez kullanarak önceki elemanları seçebilirsiniz.
RESET()
next() ve prev() fonksiyonları ile yaptığımız işlemi sıfırlayarak başa döndürmek için kullanılır.
$arr = ['tayfun', 'erbilen', 'ahmet']; echo next($arr); // Çıktı: erbilen echo next($arr); // Çıktı: ahmet echo reset($arr); // Çıktı: tayfun echo next($arr); // Çıktı: erbilen
EXTRACT()
Dizideki anahtarları değişken olarak kullanmak için kullanılır.
$arr = [ 'ad' => 'tayfun', 'soyad' => 'erbilen' ]; extract($arr); echo $ad; // Çıktı: tayfun echo $soyad; // Çıktı: erbilen
ASORT()
Dizideki değerlere göre A’dan Z’ye doğru sıralamak için kullanılır.
$arr = [3,1,6,4]; print_r($arr); /* Array ( [0] => 3 [1] => 1 [2] => 6 [3] => 4 ) */ asort($arr); print_r($arr); /* Array ( [1] => 1 [0] => 3 [3] => 4 [2] => 6 ) */
ARSORT()
Dizideki değerlere göre Z’den A’ya doğru sıralamak için kullanılır.
$arr = [3,1,6,4]; print_r($arr); /* Array ( [0] => 3 [1] => 1 [2] => 6 [3] => 4 ) */ arsort($arr); print_r($arr); /* Array ( [2] => 6 [3] => 4 [0] => 3 [1] => 1 ) */
KSORT()
Dizideki anahtarlara göre A’dan Z’ye doğru sıralamak için kullanılır.
$arr = [ '1' => 'erbilen', '3' => 'tayfun', '2' => 'developer' ]; print_r($arr); /* Array ( [1] => erbilen [3] => tayfun [2] => developer ) */ ksort($arr); print_r($arr); /* Array ( [1] => erbilen [2] => developer [3] => tayfun ) */
KRSORT()
Dizideki anahtarlara göre Z’den A’ya doğru sıralamak için kullanılır.
$arr = [ '1' => 'erbilen', '3' => 'tayfun', '2' => 'developer' ]; print_r($arr); /* Array ( [1] => erbilen [3] => tayfun [2] => developer ) */ krsort($arr); print_r($arr); /* Array ( [3] => tayfun [2] => developer [1] => erbilen ) */
Hocam ellerinize sağlık. Oldukça emek kokuyor.
İhtiyaç oldukça ziyaret ettiğim bir sayfa eline emeğine sağlık kardeş
sayfayı sık kullanılanlara ekledim. güzel bir anlatım tarzı + resimler
Tayfun Hocam öncelikle teşekkür ederim gerçekten kaliteli bir iş çıkartmışsınız. Ancak ben liseye gittiğim için öğrenmeye zaman ayıramıyorum lütfen kusuruma bakmayın
Çok güzel bir çalışma olmuş, elinize sağlık.