开发者学堂课程【PHP 基础入门课程(下):回调匿名函数】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/710/detail/12642
回调匿名函数
内容介绍:
一、回调匿名函数的概念
二、回调匿名函数的案例
三、回调匿名函数的证明方法
四、回调匿名函数的学习小结
一、回调匿名函数的概念
概念:指直接将匿名函数定义在函数的实参中,当做一个实参传递给形参。
二、回调匿名函数的案例
案例1:自定义求一个数组所有元素的立方
需要一个函数来完成这个需求,首先定义一个数组,这个数组对于函数来说只负责去定义每一个元素,再把每一个元素的立方把它保存起来,这里就需要一个外部的函数来完成。先定义一个函数,把一个数组传递进来,$arr 的意思是一个数组,再引用一个外部的函数,这个函数的作用是把给它的数的立方传递回来,再定义一个数组,是拿来保存函数的,这里定义的是$list=[],再定义存进来的数组,去调用之前的函数,把它求出来,调用的时候直接传入一个函数,这个时候就是一个形参。
代码如下:
//定义一个数组
$arr=[1,2,3];
//定义一个函数,能够取得所有数组的所有元素的立方
//@param $cube是一个回调函数,接收一个参数,返回参数的立方
Function my_cube($arr,$cube){
//完成要求
$list =[];
Foreach ($arr as $value){
//存起数据
//可变的,可以给予一个普通的函数
$list[]=$cube($value);
}
//返回
return $list;
}
这里的回调函数是$cube;
function cube($num){
return $num**3;
}
$res = my_cube($arr,’cube’);
Print_r($res);
结果如下:
这种方式可以但就不是匿名,解决方案
添加代码:
function cube($num){
return $num**3;
}
$cube = function($num){
Return $num ** 3;
}
$res = my_cube($arr,’$cube’);
Print_r($res);
运行结果:
效果与之前一样。
三、回调匿名函数的证明
//直接传一个匿名函数给函数,直接给一个函数
$res = my_cube($arr,function($num){return $num ** 3;})
Print_r($res);
这个跟上面的方法是一样的,这个方法把它简化了,结果是跟上面的一样的。第一个方法中完成了目标,调用了一个匿名函数当做回参传递给了一个函数,
案例:1::使用系统函数 array_map
前提摘要:系统函数时系统规定的,要求时 array_map 是一个系统函数,目标是对传入的数组的每一个元素进行相应加工,回调函数决定加工结果。首先 array_map 传入一个对应的匿名函数,再给 array_map 想要加工的一个数组$arr,实操如下:
//直接调用系统函数 参数$n 和$arr
$res = array_map(function()$n{return $n **3})
//输出$res 参数
Print_r($res);
输出的结果也是跟上面的一样,如果想要改变次方的数,把数字“3”换成想要的次方数。
四、回调匿名函数的学习小结
1.回调匿名函数就是当在函数调用时需要回调函数时,定义一个匿名函数作为实参;
2.回调匿名函数的本质也是在定义一个函数,让变量(形参)进行保存并调用;
3.回调匿名函数的作用:匿名函数用后即焚,可以释放掉占用的内存。(假设用 function cube($num){return $num**3;}这个方式实现,传 cube 的参数进去,此时系统编译后有两个参数,如果这个函数调用后自己销毁了,但是这个函数本身所占的空间在代码段中没有销毁,但如果用匿名函数传参,函数一但调用完会释放所占的内存,所以用后即焚,释放掉占用的内存这是它的优势。)
以上是关于回调匿名函数的内容。

