Hướng dẫn dùng array.filte trong PHP
Nội Dung
Hàm array_filter() trong PHP giúp ta lọc các giá trị của mảng bằng cách sử dụng một hàm callback (hàm gọi lại) . Nó sẽ duyệt qua mỗi value trong mảng input đang truyền tới hàm callback . Có nghĩa là nó sẽ lặp lại từng giá trị trong mảng, chuyển chúng tới hàm do người dùng xác định hoặc hàm gọi lại. Ta có thể truyền mảng vào như là tham số đầu tiên và một hàm ẩn danh làm tham số thứ hai. Nếu như hàm callback trả về True thì value hiện tại của mảng input sẽ được trả về trong mảng kết quả và key của mảng được giữ nguyên. Với cách này khi key của mảng input được giữ nguyên thì có nghĩa là key của mảng input và mảng kết quả là giống nhau. 2. Cú pháp hàm array_filter() trong PHPTa có cú pháp của hàm array_filter() trong PHP :
Trong đó :
Với $flag nó có thể một trong mode :
Mặc định là 0 sẽ chuyển giá trị làm đối số duy nhất để gọi lại thay thế. Cuối cùng một mảng được lọc được trả về. Ví dụ: '; print_r(array_filter($array, "Even")); ?> Kết quả Array ( [0] => 12 [1] => 0 [2] => 0 [3] => 18 [5] => 0 [6] => 46 ) Ở ví dụ này ta sử dụng hàm array_filter() để lọc ra mảng mới với value là những số chẵn ở mảng cũ. Trước tiên bạn có thể thấy rằng hàm callback là hàm tìm ra số chia hết cho 2 trong mảng $array . Lúc này giá trị là số chẵn sẽ là True và được giữ lại sau đó được in ra mảng mới(kể cả số 0). Ngược lại số không phải số chẵn mang giá trị False và bị xóa. Tuy nhiên cũng là ví dụ như trên nhưng mình sẽ không truyền hàm callback : '; print_r(array_filter($array)); ?> Kết quả Array ( [0] => 12 [3] => 18 [4] => 27 [6] => 46 ) Như ta có thể thấy rằng phần tử 0 hoặc False sẽ không được in ra. Chú ý Nếu mảng được thay đổi từ hàm gọi lại (ví dụ như thêm, xóa, không được đặt,…) thì hành động của hàm là không xác định. 3. Ví dụ về hàm array_filter() trong PHPVí dụ 1: Tạo 1 mảng số lẻ lọc từ mảng int có sẵn
Kết quả Array ( [0] => 1 [1] => 3 [2] => 5 ) Ta có thể thấy việc lọc bằng vòng lặp này chính là phương thức lọc của hàm array_filter() . Vì vậy 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 hay vòng lặp nhé. Ví dụ 2: Lọc một mảng không tuần tự dựa trên key và value 'PHP', 'last' => 'Program', 'password' => 'laptrinhtudau', 'email' => '' ]; $filtered = array_filter($inputs, function ($value, $key) { return !empty($value) && $key !== 'password'; }, ARRAY_FILTER_USE_BOTH); echo ''; print_r($filtered); ?> |