Filter của PHP – array_filter

Map, filter và reduce với PHP - phần 2 - array_filter 2

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.

0 0 votes
Article Rating