Filter của PHP – array_filter

array_filter lọc mảng đầu vào qua một hàm callback (hàm này trả về boolean nhé). Usage:
array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )
Ví dụ 1:
Tạo 1 mảng số lẻ lọc từ mảng int có sẵn
Dùng foreach:
$numbers = [1, 2, 3, 4, 5];
$oddNumbers = [];
foreach ($numbers as $number) {
if ($number % 2 != 0) {
$oddNumbers[] = $number;
}
}
var_dump($oddNumbers); // [1, 3, 5]Dùng array_filter:
$numbers = [1, 2, 3, 4, 5];
$oddNumbers = array_filter($numbers,function ($value){
return $value % 2 != 0;
});
var_dump($oddNumbers); // [1, 3, 5]Ví dụ 2:
Lọc một mảng không tuần tự dựa trên key và value
$inputs = [
'first' => 'John',
'last' => 'Doe',
'password' => 'secret',
'email' => ''
];
$filtered = array_filter($inputs, function ($value, $key) {
return !empty($value) && $key !== 'password'; // value có giá trị và key không phải password
}, ARRAY_FILTER_USE_BOTH); // ARRAY_FILTER_USE_BOTH là flag để hàm callback nhận được cả key và value
var_dump($filtered); // ['first' => 'John','last' => 'Doe']array_filter có 2 flag chính:
ARRAY_FILTER_USE_KEYhàm callback sẽ nhận giá trị đầu vào là key của phần tửARRAY_FILTER_USE_BOTHhàm callback sẽ nhận cả 2 giá trị đầu vào value & key
Từ giờ khi muốn lọc phần tử của một mảng thì hãy suy nghĩ cách dùng array_filter thay vì dùng mảng tạm và vòng lặp nhé. Chi tiết về usage của array_filter có thể tham khảo tại đây.


