(PHP 4 >= 4.0.6, PHP 5, PHP 7)
array_filter — Bir dizinin elemanlarını bir geriçağırım işleviyle süzgeçten geçirir
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.
diziElemanları tek tek işleve aktarılacak dizi.
işlevKullanı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.
Süzülen dizi döner.
| 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.
|
Ö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(6, 7, 8, 9, 10, 11, 12);
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(
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => ''
);
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)
}
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.