php数组(十一) array_walk_recursive

array_walk_recursive — 对数组中的每个成员递归地应用用户函数

 

适用于多维数组的遍历

 

array_walk_recursive(array &$arraycallable $callbackmixed $userdata = null): bool

将用户自定义函数 callback 应用到 array 数组中的每个单元。本函数会递归到更深层的数组中去。

 

参数

array

  • 输入的数组。

callback

  • 典型情况下 callback 接受两个参数。array 参数的值作为第一个,键名作为第二个。

注意: 

  • 如果 callback 需要直接作用于数组中的值,则给 callback 的第一个参数指定为引用。这样任何对这些单元的改变也将会改变原始数组本身。

userdata

  • 如果提供了可选参数 userdata,将被作为第三个参数传递给 callback

1、遍历数据的示例,使用匿名回调函数的方式有效,使用函数名的方式发现对于值是数组的key不会传到回调函数去

<?php
$sweet = array('a' => 'apple', 'b' => 'banana');
$fruits = array('sweet' => $sweet, 'sour' => 'lemon');

function test_print($item, $key)
{
    echo "$key holds $item\n";
}

array_walk_recursive($fruits, 'test_print');

array_walk_recursive($fruits, function (&$v, $key){
            $v = $v . "_11";
        });
    
            var_dump($fruits);
    
array_walk_recursive($fruits, function($v1, $key1){
        echo "$key1 holds $v1\n";

}, 'haha');

        
?>

 输出:

a holds apple
b holds banana
sour holds lemon
array(2) {
  ["sweet"]=>
  array(2) {
    ["a"]=>
    string(8) "apple_11"
    ["b"]=>
    string(9) "banana_11"
  }
  ["sour"]=>
  string(8) "lemon_11"
}
a holds apple_11
b holds banana_11
sour holds lemon_11

 

posted on 2021-08-04 21:18  1450811640  阅读(238)  评论(0编辑  收藏  举报