array_filter

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

array_filterBir dizinin elemanlarını bir geriçağırım işleviyle süzgeçten geçirir

Açıklama

array_filter ( array $dizi [, callable $işlev [, int $seçenek = 0 ]] ) : array

dizi dizisinin her elemanını sırayla işlev işlevine aktarır. Eğer işlev TRUE dönerse o dizi elemanı sonuç dizisine konur, yoksa konmaz. Dizideki anahtarlar korunur.

Değiştirgeler

dizi

Elemanları tek tek işleve aktarılacak dizi.

işlev

Kullanılacak geriçağırım işlevi.

Bu değiştirgede bir geriçağırım işlevi belirtilmezse, boolean türüne dönüşüm yapıldığında FALSE döndüren elemanlar süzülür.

seçenek

işlev işlevine hangi değiştirgelerin gönderileceğini belirler:

  • ARRAY_FILTER_USE_KEY - işlev işlevine tek değiştirge olarak değer değil anahtar aktarılır.
  • ARRAY_FILTER_USE_BOTH - işlev işlevine değiştirge olarak sadece değer değil anahtar da aktarılır.

Dönen Değerler

Süzülen dizi döner.

Sürüm Bilgisi

Sürüm: Açıklama
5.6.0 Seçimlik seçenek değiştirgesi ve ARRAY_FILTER_USE_KEY ile ARRAY_FILTER_USE_BOTH sabiti eklendi.

Örnekler

Örnek 1 - array_filter() örneği

<?php
function tek($var)
{
   
//tamsayı girdi tek sayı mı diye bakar
    
return($var 1);
}

function 
cift($var)
{
   
//tamsayı girdi çift sayı mı diye bakar
    
return(!($var 1));
}

$array1 = array("a"=>1"b"=>2"c"=>3"d"=>4"e"=>5);
$array2 = array(6789101112);

echo 
" Tek:\n";
print_r(array_filter($array1"tek"));
echo 
"Çift:\n";
print_r(array_filter($array2"cift"));
?>

Yukarıdaki örneğin çıktısı:

 Tek:
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Çift:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)

Örnek 2 - işlevsiz array_filter() örneği

<?php

$girdi 
= array(
             
=> 'foo',
             
=> false,
             
=> -1,
             
=> null,
             
=> ''
          
);

print_r(array_filter($girdi));
?>

Yukarıdaki örneğin çıktısı:

Array
(
    [0] => foo
    [2] => -1
)

Örnek 3 array_filter() ile seçenek kullanımı

<?php

$arr 
= ['a' => 1'b' => 2'c' => 3'd' => 4];

var_dump(array_filter($arr, function($k) {
    return 
$k == 'b';
}, 
ARRAY_FILTER_USE_KEY));

var_dump(array_filter($arr, function($v$k) {
    return 
$k == 'b' || $v == 4;
}, 
ARRAY_FILTER_USE_BOTH));
?>

Yukarıdaki örneğin çıktısı:

array(1) {
  ["b"]=>
  int(2)
}
array(2) {
  ["b"]=>
  int(2)
  ["d"]=>
  int(4)
}

Notlar

Dikkat

Eğer geriçağırım işlevinde dizi değişikliğe uğrarsa (yani, elemen ekleme, silme, tanımsız yapma gibi işlemler) bu işlevin davranışı belirsizdir.

Ayrıca Bakınız

  • array_map() - Belirtilen dizilerin elemanlarına geriçağırım işlevini uygular
  • array_reduce() - Bir geriçağırım işlevini dizinin bütün elemanlarına tek tek uygulayıp sonucu döndürür
  • array_walk() - Bir dizinin her üyesine kullanıcı tanımlı bir işlevi uygular