Rate this post

array_filter() là một hàm trong PHP dùng để lọc các phần tử trong một mảng. Hàm này sẽ duyệt qua từng phần tử trong mảng và gọi một hàm callback để kiểm tra xem phần tử đó có đáp ứng điều kiện hay không, nếu đáp ứng thì sẽ giữ lại phần tử đó trong mảng mới và nếu không đáp ứng thì sẽ loại bỏ phần tử đó khỏi mảng mới.

Các bài viết liên quan:

Cú pháp của hàm như sau:

array_filter(array, callback, flag)

  • array là mảng cần lọc
  • callback là hàm kiểm tra điều kiện, có thể là một hàm đã được định nghĩa sẵn hoặc một anonymous function.
  • flag là tùy chọn, nếu được chỉ định, nó sẽ xác định cách chọn phần tử trong mảng, có thể là 0 hoặc 1.

Tại sao nên sử  dụng array_filter trong php ? 

Sử dụng array_filter() trong PHP có nhiều lợi ích, bao gồm:

  • Giúp lọc các phần tử trong mảng theo điều kiện mà bạn định nghĩa, giúp cho việc xử lý dữ liệu trở nên dễ dàng và hiệu quả hơn.
  • Sẽ giảm thiểu số lần duyệt qua mảng, giảm thời gian xử lý.
  • Giúp giải phóng bộ nhớ khi xóa các phần tử không cần thiết.
  • Có thể kết hợp với các hàm khác để xử lý dữ liệu một cách linh hoạt và hiệu quả.

Các hàm như array_filter() là một trong những hàm tiêu biểu trong xử lý mảng trong PHP, đặc biệt là trong các dự án lớn với nhiều dữ liệu, sử dụng nó sẽ giúp cho việc xử lý dữ liệu trở nên dễ dàng hơn.

Sử dụng array_filter trong php như thế nào ? 

Sử dụng hàm array_filter() trong PHP để lọc các phần tử trong mảng theo một số điều kiện nhất định. Hàm này sẽ trả về một mảng mới với các phần tử đã được lọc theo điều kiện đã đặt.

Cú pháp:

array_filter(array, callback, use_keys);

  • array là mảng cần lọc.
  • callback là hàm lọc, nếu không cung cấp thì mặc định là null
  • use_keys là tùy chọn, nếu true thì sẽ sử dụng chỉ mục của mảng làm tham số cho hàm lọc.

Ví dụ:

$arr = array(1, 2, 3, 4, 5, 6);

$arr = array_filter($arr, function($val) {

    return $val % 2 == 0;

});

print_r($arr);

Kết quả:

Array ( [1] => 2 [3] => 4 [5] => 6 )

Trong ví dụ trên, hàm array_filter được sử dụng để lọc các phần tử chẵn trong mảng $arr. Các phần tử chẵn sẽ được giữ lại trong mảng mới và các phần tử lẻ sẽ bị loại bỏ.

Ngoài ra, bạn cũng có thể sử dụng array_filter() với một hàm callback tùy chỉnh để lọc mảng theo những điều kiện khác nhau.

Những lưu ý khi sử dụng array_filter trong php 

  1. Hàm array_filter() sẽ không thay đổi kích thước của mảng gốc, nó chỉ trả về một mảng mới với các phần tử đã được lọc.
  2. Nếu muốn thay đổi mảng gốc, hãy gán kết quả trả về từ hàm array_filter() cho mảng gốc.
  3. Nếu không cung cấp hàm callback, hàm array_filter() sẽ loại bỏ các phần tử có giá trị false, null, 0, “”, array() hoặc var không tồn tại.
  4. Nếu chỉ muốn lọc theo chỉ số của mảng thì chọn use_keys = true
  5. Chú ý với các mảng có chứa các giá trị null hoặc false, nếu muốn giữ lại chúng thì nên sử dụng hàm callback để kiểm tra giá trị.
  6. Nếu mảng có chứa các giá trị null hoặc false và bạn muốn giữ lại chúng thì nên sử dụng hàm callback để kiểm tra giá trị, hoặc sử dụng array_diff() để loại bỏ các giá trị null và false trước khi sử dụng array_filter().
  7. Hãy chú ý đến thứ tự các tham số trong hàm. Nếu bạn muốn sử dụng chỉ mục của mảng làm tham số cho hàm callback, hãy chỉ định tham số use_keys = true sau khi hàm callback.
  8. Chú ý với các mảng kết hợp, có chứa cả key và value, nếu muốn lọc theo key thì chọn use_keys = true hoặc dùng array_filter( $arr, function($key) { return $key == ‘a’; }, ARRAY_FILTER_USE_KEY )
  9. array_filter() chỉ lọc các phần tử của mảng gốc, nó không lọc các phần tử được gán từ một biến hoặc hàm khác. Vì vậy, hãy chắc chắn rằng bạn truyền vào mảng đúng vào hàm array_filter()
  10. Trong trường hợp mảng có chứa các giá trị 0, nếu muốn giữ lại các giá trị này thì cần sử dụng hàm callback để kiểm tra giá trị hoặc sử dụng array_diff() để loại bỏ các giá trị 0 trước khi sử dụng array_filter().

Ví dụ 

Ví dụ 1: Lọc các số chẵn trong mảng

$numbers = array(1, 2, 3, 4, 5, 6, 7, 8, 9);

$evenNumbers = array_filter($numbers, function ($number) {

    return $number % 2 == 0;

});

print_r($evenNumbers); // sẽ in ra Array ( [1] => 2 [3] => 4 [5] => 6 [7] => 8 )

Ví dụ 2: Lọc các phần tử có chứa ký tự “a” trong mảng

$words = array("apple", "banana", "orange", "grape");

$wordsWithA = array_filter($words, function ($word) {

    return strpos($word, "a") !== false;

});

print_r($wordsWithA); // sẽ in ra Array ( [0] => apple [1] => banana )

Ví dụ 3: Lọc các phần tử có giá trị lớn hơn 5 trong mảng

$numbers = array(1, 2, 3, 4, 5, 6, 7, 8, 9);

$bigNumbers = array_filter($numbers, function ($number) {

    return $number > 5;

});

print_r($bigNumbers); // sẽ in ra Array ( [5] => 6 [6] => 7 [7] => 8 [8] => 9 )

Ví dụ 4: Lọc các phần tử có giá trị trong mảng

$arr = array(1, "", null, false, array());

$result = array_filter($arr);

print_r($result); // will return Array ( [0] => 1 )

Ví dụ 5: Lọc các phần tử có giá trị trong mảng với flag

$arr = array(1, "", null, false, array());

$result = array_filter($arr,null,ARRAY_FILTER_USE_BOTH);

print_r($result); // will return Array ( [0] => 1 )

Trong ví dụ này, chúng ta sử dụng flag ARRAY_FILTER_USE_BOTH để lọc cả giá trị và chỉ mục của phần tử trong mảng. Tất cả các phần tử có giá trị rỗng, null hoặc false sẽ bị bỏ qua. Kết quả cuối cùng chỉ có phần tử có giá trị 1.

  • Bạn có thể sử dụng flag ARRAY_FILTER_USE_KEY để lọc các phần tử theo chỉ mục của mảng.
  • Flag ARRAY_FILTER_USE_BOTH sẽ lọc cả giá trị và chỉ mục của phần tử trong mảng.
  • Các flag này có thể giúp cho việc lọc mảng trở nên linh hoạt hơn và cho phép bạn lọc dữ liệu theo cách khác nhau.

Kết luận 

Hàm array_filter trong PHP là một công cụ mạnh mẽ để lọc các phần tử trong một mảng. Nó cho phép bạn chọn cách lọc các phần tử bằng cách sử dụng một hàm callback hoặc flag để lọc các phần tử theo chỉ mục hoặc giá trị. Việc sử dụng array_filter có thể giúp bạn làm sạch và lọc dữ liệu mảng một cách nhanh chóng và hiệu quả.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now