array_filter PHP
array_filter
merupakan fungsi bawaan PHP yang dapat digunakan untuk memfilter atau menyaring elemen array berdasarkan fungsi callback yang diberikan.
Ketika iterasi, setiap elemen array akan diteruskan sebagai argumen fungsi, fungsi ini kemudian menentukan logika penyaringan, jika fungsi mengembalikan true
maka elemen tersebut akan masuk dalam penyaringan, jika false
maka akan dibuang.
Berikut beberapa topik terkait array_filter
PHP yang akan kita bahas.
Sintaks
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
Parameter
array
- array yang ingin difilter.callback
(opsional, defaultnull
) - fungsi penyaring, jika tidak diberikan, fungsi akan menghapus elemen array kosong (empty()
) sepertinull
,0
,false
dan sebagainya. Jika diberikan, fungsi ini harus mengembalikan nilaitrue
untuk menyaring elemen yang diinginkan.mode
(opsional, defaultnull
) - menentukan argumen apa yang dikirim kecallback
, dapat berupa integer atau konstanta berikut:ARRAY_FILTER_USE_KEY
(0
) - kunci array sebagai satu-satunya argumen yang diberikan ke argumencallback
.ARRAY_FILTER_USE_BOTH
(1
) - kunci dan nilai array sebagai argumencallback
.
Nilai Kembalian
Mengembalikan array dimana setiap elemennya jika diuji dengan fungsi callback
mengembalikan nilai true
.
Contoh
Filter Bilangan Genap
Contoh berikut, kita memiliki array $array
berisi elemen angka ganjil dan genap, kita ingin menyaring semua angka genap atau elemen yang jika dibagi 2 sisabaginya adalah 0.
$array = [1, 2, 3, 5, 6, 7, 8, 9];
$arrayEven = array_filter($array, function ($element) {
return $element % 2 === 0;
});
var_dump($arrayEven);
// array(3) {
// [1]=>
// int(2)
// [4]=>
// int(6)
// [6]=>
// int(8)
// }
Perhatikan fungsi callback
diatas, fungsi ini akan dieksekusi untuk setiap elemen array secara berurutan dimana nilai argumen $element
adalah elemen array yang sedang diiterasi saat ini.
Array hasil filter ditampung ke oleh variabel $arrayEven
, array ini akan berisi elemen-elemen yang jika setiap elemen diuji satu per satu dengan fungsi callback
mengembalikan nilai true
atau array hasil penyaringan.
Fungsi callback
tidak harus ditulis sebaris atau menggunakan anonymous function seperti contoh diatas, kita bisa mendeklarasaikannya sebelum fungsi arrayFilter
.
Contoh berikut akan berperilaku sama dengan contoh diatas, kita meneruskan fungsi isEven
sebagai callback
.
// ...
function isEven($element)
{
return $element % 2 === 0;
};
$arrayEven = array_filter($array, 'isEven');
// ...
Atau, karena kode di dalam fungsi pemfilter hanya sebaris, kita bisa menggunakan arrow function seperti berikut.
// ...
$arrayEven = array_filter($array, fn ($element) => $element % 2 === 0);
// ...
Filter Array Multidimensi
Misalnya, kita memiliki array $fruits
(buah) dimana masing-masing memiliki nama dan harga, kita ingin memfilter semua buah yang memiliki harga diatas 50 ribu.
Karakter garis bawah pada angka harga digunakan untuk keterbacaan, tidak mempengaruhi nilainya, ini sudah kita bahas di artikel tentang tipe data integer.
$fruits = [
[
'name' => 'banana',
'price' => 45_000
],
[
'name' => 'orange',
'price' => 55_000
],
[
'name' => 'grape',
'price' => 47_000
],
[
'name' => 'mango',
'price' => 50_000
],
];
$fruitsGteFiftyThousand = array_filter($fruits, function ($fruit) {
return $fruit['price'] >= 50_000;
});
var_dump($fruitsGteFiftyThousand);
// array(2) {
// [1]=>
// array(2) {
// ["name"]=>
// string(6) "orange"
// ["price"]=>
// int(55000)
// }
// [3]=>
// array(2) {
// ["name"]=>
// string(5) "mango"
// ["price"]=>
// int(50000)
// }
// }