php函数深入之匿名函数

直接上代码:

<?php

//php函数深入之匿名函数

//什么是匿名函数? 没有名字的函数就是匿名函数
/*function fun1(){};    这是普通函数 因为这个函数有名字 名字为fun1
  $test = function(){}; 这个就是匿名函数,因为它没有函数名字,它只是把这个匿名函数赋值给了$test变量
 */


//(1)匿名函数的使用方式1
$fun1 = function($n1,$n2){
    return $n1 + $n2;

};  //把一个函数赋值给变量$fun1 通过变量$fun1来调用这个匿名函数

//调用匿名函数
echo $fun1(10,90); //output: 100
echo '<br/>';


//(2)匿名函数使用方式2

/*如果程序员临时需要一个函数,用一次后就不想使用了 可以把匿名函数当做回调函数使用
回调函数:
举例: 你调用了某个函数,而这个函数内又会调用一个由你实现的另一个函数(A),
那么这个函数(A)就是所谓的回调函数。
所以,一般来说,你只是不直接去调用罢了。其实这个函数和别的函数,从函数的角度来讲没有区别,只是人们命名为回调函数
*/


//把一个匿名函数当做回调函数使用的经典案例如下:
function get_val($n1,$n2,$f)
{
    $sum = $n1 + $n2;

    $res = $f($sum);
    echo 'res = '.$res;  //输出: res = 36
}

//调用的时候体现出匿名函数和回调函数的概念
//将一个匿名函数传递给$f使用,$f就是一种回调函数
get_val(9,9,function($val){
    return $val * 2;
});

/*以上代码执行过程:
9,9分别传给get_val函数的$n1,$n2参数,get_val在内部计算出$n1和$n2的和之后 此时又去执行$f($sum)这一步,而在调用
get_val函数的时候 我们给的第三个参数是一个匿名函数 即function($val){},所以又进入了这个匿名函数内部开始执行,
将$sum传给匿名函数的$val 而匿名函数(此时也叫回调函数)内部又将传进来的$val * 2之后的结果返回给调用处,
即又返回到了get_val函数里的$res = $f($sum);这一步,所以最终输出结果是 res = 36
*/

?>


声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

精彩评论

全部回复12人评论7,777人参与