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_KEY
hàm callback sẽ nhận giá trị đầu vào là key của phần tửARRAY_FILTER_USE_BOTH
hà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.