Hướng dẫn dùng php array_walk_recursive trong PHP
Hàm array_walk_recursive() trong PHP Show Nội Dung
Hàm array_walk_recursive() trong PHP cũng sẽ giúp ta truyền một hàm callback hay hàm do người dùng tạo để truyền vào mảng. Hàm array_walk_recursive() sẽ đi qua tất cả các phần tử trong mảng, bất kể là vị trí đặt con trỏ bên trong mảng nó sẽ đều đi qua. Hàm array_walk_recursive() sẽ áp dụng hàm callback do người dùng tạo với từng phần tử trong mảng. Các key và value của các phần tử mảng là các tham số trong hàm do người dùng truyền vào. Hàm sẽ trả về giá trị boolean với True khi đã áp dụng thành công hàm callback vào mảng. Ngược lại hàm sẽ trả về False nếu việc áp dụng hàm callback không thành công vào mảng. Đến đây ta có thể thấy nó giống với hàm array_walk() mà ta đã tìm hiểu ở bài trước. Tuy nhiên hàm array_walk_recursive() sẽ dùng những hàm được truyền vào đi qua key và value một cách đệ quy. Hàm array_walk() thì không. Điều này giúp cho hàm array_walk_recursive() sẽ thao tác với những mảng nhiều chiều hiệu quả hơn rất nhiều. 2. Cú pháp của hàm array_walk_recursive() trong PHPTa có cú pháp của hàm array_walk_recursive() trong PHP là :
Trong đó :
Nếu myfunction cần hoạt động với các giá trị thực của mảng, hãy chỉ định tham số đầu tiên của myfunction làm tham chiếu. Sau đó, bất kỳ thay đổi nào được thực hiện đối với các phần tử đó sẽ được thực hiện trong chính mảng ban đầu. Và nếu như $extraParam được cung cấp thì nó sẽ được bổ sung làm tham số thứ ba cho hàm myfunction . Giá trị trả về sẽ là giá trị boolean với True khi đã áp dụng thành công hàm myfuncion vào mảng. Ngược lại hàm sẽ trả về False nếu việc áp dụng hàm myfunction không thành công vào mảng. Ví dụ : chạy từng phần tử của mảng trong một hàm do người dùng xác định "; } $a=array("a"=>"PHP","b"=>"Java","c"=>"Python"); array_walk_recursive($a,"myfunction"); ?> Kết quả Key a có value là: PHP Key b có value là: Java Key c có value là: Python Với ví dụ này là một ví dụ đơn giản. Ta có thể thấy nó gần như giống với hàm array_walk() . Tuy nhiên hãy xem tiếp những ví dụ bên dưới để thấy được sự khác biệt. 3. Ví dụ về hàm array_walk_recursive() trong PHPVí dụ 1: chạy từng phần tử của mảng trong một hàm do người dùng xác định "; } $a1=array("a"=>"PHP","b"=>"Java"); $a2=array($a1,"1"=>"CSS","2"=>"Python"); array_walk_recursive($a2,"myfunction"); ?> Kết quả key a có value là: PHP key b có value là: Java key 1 có value là: CSS key 2 có value là: Python Ta có thể thấy ngay được rằng trong mảng $a2 lại chứa phần tử là mảng $a1 . Nếu đã xem ở bài trước các bạn có thể thấy rằng khi thay hàm array_walk_recursive() thành hàm array_walk() thì phần kết quả sẽ trông như thế này key 0 có value là: Array key 1 có value là: CSS key 2 có value là: Python Bằng một ví dụ như vậy ta có thể thấy được rõ ràng sự khác biệt giữa hai hàm array_walk_recursive() và array_walk() . Bởi vì áp dụng đệ quy vào mảng nên hàm array_walk_recursive() sẽ xử lý được mảng sâu hơn và khác phục được điểm yếu này của mảng array_walk() Ví dụ 2: truyền thêm tham số thứ ba vào hàm "; } $a1=array("a"=>"PHP", "b"=>"Java"); $a2=array($a1, "1"=>"HTML", "2"=>"Python"); array_walk_recursive($a2, "myFunction", "có value là: "); ?> Kết quả key a có value là: PHP key b có value là: Java key 1 có value là: HTML key 2 có value là: Python Ví dụ 3: 'PHP', 'b' => 'Java'); $a2 = array('c' => $a1, '1' => 'Python'); function test_print($item, $key) { echo "key $key có value là: $item Kết quả key a có value là: PHP key b có value là: Java key 1 có value là: Python Ta có thể thấy key là “c” lại không hiển thị ra màn hình. Tại sao vậy? Bởi vì bất kỳ key nào chứa một mảng cũng sẽ không bao giờ được truyền cho hàm và nó cũng sẽ không được hiển thị. |