array_filter

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

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 = null, int$kip = 0): array

dizi dizisinin her elemanını sırayla işlev işlevine aktarır. Eğer işlevtrue 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.

Bağımsız Değişkenler

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, 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.
Belirtilmezse, işlev işlevine tek bağımsız değişken olarak aktarılacak değer öntanımlı olarak 0'dır.

Dönen Değerler

Süzülen dizi döner.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0iş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.

Ö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 = ['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) }

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_intersect() - Dizilerin kesişimini hesaplar
  • 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
To Top