加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP闭包实现函数的自调用达成递归

发布时间:2021-11-18 13:49:48 所属栏目:PHP教程 来源:互联网
导读:PHP的闭包可能不常用,但是在某些场合之下还是可以考虑用php的闭包来实现某些功能的,比如递归,这里讲一下用php的闭包实现递归 //php闭包实现函数的自调用,也就是实现递归 function closure($n,$counter,$max){ //匿名函数,这里函数的参数加符号是,引址

PHP的闭包可能不常用,但是在某些场合之下还是可以考虑用php的闭包来实现某些功能的,比如递归,这里讲一下用php的闭包实现递归
 
//php闭包实现函数的自调用,也就是实现递归
function closure($n,$counter,$max){
    //匿名函数,这里函数的参数加&符号是,引址调用参数自己
    $fn = function (&$n,&$counter,&$max=1) use(&$fn){//use参数传递的是函数闭包函数自身
        $n++;
        if($n < $max){//递归点,也就是递归的条件
            $counter .=$n.'<br />';
            //递归调用自己
            $fn($n,$counter,$max);
        }
        return $counter;
    };//记得这里必须加``;``分号,不加分号php会报错,闭包函数
    /*
    *这里函数closure的返回值就是调用闭包的匿名函数
    *而闭包函数,引用closure函数传进来的参数
    */
    return $fn($n,$counter,$max);
   
}
echo (closure(0,'',10));
 
这是一个简单的使用php闭包实现递归的函数,其实,假如我们对这个函数稍微修改一下,是可以实现很多功能的,比如说,无限极分类。
 
关于里面的闭包函数,其实,我们也可以不用引用外面的closure参数,里面的闭包函数的参数,我们可以在closure的内部设置。
 
我们也可以不用返回闭包函数的值,因为闭包函数是在closure函数里面,我们可以在closure里面设置一下变量传递给闭包函数,然后,用闭包递归获取我们想要的东西存储在数组中,再利用closure函数返回闭包函数获取的东西,所以,闭包函数也可以没有返回值的,关键是你要获取什么东西。
 
总之,你只要利用这个闭包函数实现你要的东西,然后返回你需要的东西即可,不一定非要从闭包函数的返回值中获取。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读