PHP array_walk_recursive 和 array_map 用法及区别 以及在其中使用闭包(匿名函数)use()

array_walk_recursive ()

函数中的闭包函数可以带两个参数 ,第一个为value, 第二个为key

$data = [];

array_walk_recursive
($value,function($v,$k) use(&$data) { $data[] = $v; });

return $data;

$value (array)  穿进来的数组

$v 循环传给闭包函数的 value 值

$k 循环传给闭包函数的 key 值

use () 连接闭包和外界变量 其作用是从父作用域继承变量

&$data  闭包函数外的变量,传入到闭包中,用来传值

----------------------------------------------------------------------------------------------------------

另一种写法:

$sweet = array(
  'a' => 'apple',
  'b' => 'banana'
);

$fruits = array(

'sweet' => $sweet,
  'sour' => 'lemon'
);

function test_print($item, $key) {
  echo " $key holds $item <br/>";
}

array_walk_recursive($fruits, 'test_print');

参考地址 :https://www.jb51.net/article/97402.htm

array_map()

函数中的闭包只能传入 value值

class demo {

    public function map($arr) {
        array_map([$this,"aa"],$arr);
    }

    public function aa($v) {
       echo "<pre>";
       print_r($v);
    }

}

$arr  传入的数据

$this 调用这个class

$v 传入的数组

-----------------------------------------------------

另一种写法:

array_map(function($v) use(&$data) {

        return $data;

},$arr);

参考地址 : https://www.cnblogs.com/lbcheng/p/7813888.html

use()

参考地址 :https://blog.csdn.net/echojson/article/details/80633118

猜你喜欢

转载自www.cnblogs.com/http-500/p/12200037.html