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