PHP array_walk_recursive()

Giới thiệu về array_walk_recursive()

Hàm array_walk_recursive() trong PHP là một hàm rất hữu ích cho việc xử lý các mảng đa chiều. Hàm này cho phép bạn áp dụng một hàm callback cho từng phần tử trong mảng, kể cả khi mảng có nhiều cấp độ (nhiều chiều).

Cú Pháp

array_walk_recursive(array &$array, callable $callback, mixed $userdata = null): void

Tham Số

  • array: Mảng mà bạn muốn xử lý. Tham số này được truyền theo cách tham chiếu, nghĩa là khi bạn thay đổi giá trị của mảng trong hàm callback, nó sẽ được cập nhật ngay cả bên ngoài hàm.
  • callback: Hàm callback mà bạn muốn áp dụng cho từng phần tử của mảng. Hàm này phải nhận ít nhất một tham số (giá trị của phần tử) và có thể nhận thêm hai tham số (khóa của phần tử).
  • userdata: (Tùy chọn) Dữ liệu bổ sung mà bạn muốn truyền vào hàm callback. Tham số này có thể là bất kỳ kiểu dữ liệu nào.

Ví Dụ Sử Dụng

$array = [
    'fruits' => ['apple', 'banana'],
    'vegetables' => ['carrot'],
    'citrus' => ['orange', 'lemon']
];

function printValue($value, $key) {
    echo "$key: $value\n";
}

array_walk_recursive($array, 'printValue');

Khi chạy đoạn mã trên, bạn sẽ nhận được đầu ra như sau:

fruits: apple
fruits: banana
vegetables: carrot
citrus: orange
citrus: lemon

Ứng Dụng

Hàm array_walk_recursive() thường được sử dụng trong các tình huống như:

  • Xử lý và in ra các giá trị trong mảng đa chiều.
  • Sửa đổi giá trị của các phần tử trong mảng.
  • Thực hiện các tác vụ phức tạp cần sử dụng cả giá trị và khóa của các phần tử trong nhiều cấp độ.

Lưu Ý

Hàm callback có thể được định nghĩa dưới dạng hàm ẩn danh (anonymous function) kể từ PHP 5.3:

array_walk_recursive($array, function($value, $key) {
    echo "$key: $value\n";
});

Hàm array_walk_recursive() không tạo ra một bản sao của mảng, mà nó thay đổi mảng gốc nếu bạn thay đổi giá trị trong callback. Do đó, cần cẩn trọng khi sử dụng hàm này để tránh thay đổi không mong muốn.