Bu yazıda PHP array_filter örnek kullanımı ile dizide filtre uygulamayı öğreneceksiniz. Bir (callback )geri çağırma fonksiyonu kullanarak bir dizinin değerlerini filtreler. Bir dizideki her değerini, geri çağırma fonksiyonuna geçirerek işler. Geri çağırma fonksiyonu ile filtrelenen değerler dizisi geriye döner.
En basit örneklerden bir tanesi ile konuyu inceleyelim. Elimizde sayılardan oluşan bir dizi olduğunu varsayalım. Bu dizideki çift sayıları filtreleyip almak istiyoruz. Aşağıdaki örnek bu işlemi gerçekleştirir.
1 2 3 4 5 6 7 8 9 10 | <?php $sayilar=[1,25,30,54,75,91,21,34,4]; $ciftSayilar=array_filter($sayilar,function($gelen){ return $gelen % 2 == false; }); print_r($ciftSayilar); |
yada
1 2 3 4 5 6 7 8 9 10 11 12 | <?php function ciftSayiMi($gelen){ return $gelen % 2 == false; } $sayilar=[1,25,30,54,75,91,21,34,4]; $ciftSayilar=array_filter($sayilar,'ciftSayiMi'); print_r($ciftSayilar); |
yukarıdaki kullanımlardan her hangi birini kullanarak çift sayıları filtreleme yapabilirsiniz.
ARRAY_FILTER_USE_KEY
PHP 5.6, ile bir parametre yerine anahtarla filtrelemek için ARRAY_FILTER_USE_KEY olarak ayarlayabileceğiniz flag adlı array_filter() öğesine üçüncü parametreyi kullanıma sundu. Aşağıdaki örneğe bakınız.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php $liste = [ 'kisi1'=>[ 'ad'=>'Hayri', 'yas'=>35 ], 'kisi2'=>[ 'ad'=>'Ahmet', 'yas'=>40 ] ]; $kisi1=array_filter($liste,function($key){ return $key=='kisi1'; },ARRAY_FILTER_USE_KEY); print_r($kisi1); |
ARRAY_FILTER_USE_BOTH
İsterseniz anahtar değer çiftlerinin her ikisini de parametre olarak geçen bir callback fonksiyon ile filtreleme yapabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php $liste = [ 'kisi1'=>[ 'ad'=>'Hayri', 'yas'=>35 ], 'kisi2'=>[ 'ad'=>'Ahmet', 'yas'=>40 ] ]; //Adı ahmet olan kaydı getir $isimler=array_filter($liste,function($val,$key){ return $val['ad']=='Ahmet'; },ARRAY_FILTER_USE_BOTH); print_r($isimler); |
Dışarıdan Gönderilen Parametre ile Filtreleme
Dışarıdan geçilen bir parametre ile dizi içinde arama yapabilirsiniz. Aşağıdaki iki boyutlu dizi içinde adı Ahmet olan kaydı arayan filtre fonksiyonuna bakınız.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php $liste = [ 'kisi1'=>[ 'ad'=>'Hayri', 'yas'=>35 ], 'kisi2'=>[ 'ad'=>'Ahmet', 'yas'=>40 ] ]; //aranan isim $aranan='Ahmet'; $isimler=array_filter($liste,function($deger)use ($aranan) { return $deger['ad']==$aranan; }); print_r($isimler); |
Yorum Yap