微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 PHP 中构建匿名递归函数?

如何解决如何在 PHP 中构建匿名递归函数?

编辑:我很抱歉重复,但搜索此问题的标题并没有在搜索结果显示这样的重复,所以我不知道已经有问题了。


这行不通,因为 $greet调用时是未知的。

<?PHP
$greet = function($name)
{
    printf("Hello %s\r\n",$name);
    if($name != 'PHP')
    {
        $greet('PHP'); // $greet not defined
    }
};

$greet('World');
?>

这个想法是拥有一个纯粹在其父作用域内的递归函数(即函数中的函数),而不需要构建一个类。

那么,如何在 PHP 中正确构建匿名递归函数?甚至有可能吗?如果是这样,如何?

解决方法

是的,你可以。您需要通过引用 use $greet 变量,如下所示:

$greet = function($name) use (&$greet)
{
    printf("Hello %s\r\n",$name);
    if($name != 'PHP')
    {
        $greet('PHP');
    }
};

$greet('World');

工作示例:
https://3v4l.org/vUhIW

这篇文章更详细地描述了这一点:
https://fragdev.com/blog/php-recursion-with-anonymous-functions

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。