(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
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. dizi
sıralıysa dönen dizi de boşluklar olabilir. Boşluklardan kurtulmak için dizi array_values() işlevi ile yeniden sıralanabilir.
dizi
Elemanları tek tek işleve aktarılacak dizi.
işlev
Kullanılacak geriçağırım işlevi.
Bu bağımsız değişkende bir geriçağırım işlevi belirtilmezse, dizi
nin tüm boş girdileri silinir. PHP'nin boşu nasıl tanımladığını görmek için empty() işlevine bakınız.
kip
işlev
işlevine hangi bağımsız değişkenlerin gönderileceğini belirler:
ARRAY_FILTER_USE_KEY
- işlev
işlevine tek bağımsız değişken olarak değer değil anahtar aktarılır.ARRAY_FILTER_USE_BOTH
- işlev
işlevine bağımsız değişken olarak sadece değer değil anahtar da aktarılır.işlev
işlevine tek bağımsız değişken olarak aktarılacak değer öntanımlı olarak 0
'dır. Süzülen dizi döner.
Sürüm: | Açıklama |
---|---|
8.0.0 | işlev artık null olabiliyor. |
8.0.0 | Eğer işlev e bağımsız değişkenlerinden biri gönderimli aktarılıyorsa, bu artık E_WARNING seviyesinde bir uyarıya sebep oluyor. |
Ö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 = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
$array2 = [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şlev
siz array_filter() örneği
<?php
$girdi = [
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => '',
5 => '0',
6 => 0,
];
print_r(array_filter($girdi));
?>
Yukarıdaki örneğin çıktısı:
Array ( [0] => foo [2] => -1 )
Örnek 3 - array_filter() ile kip
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.