(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.
diziElemanları tek tek işleve aktarılacak dizi.
işlevKullanılacak geriçağırım işlevi.
Bu bağımsız değişkende bir geriçağırım işlevi belirtilmezse,
dizinin 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şleve 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şlevsiz 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, veya tanımsız yapma gibi işlemler) bu işlevin davranışı belirsizdir.