【问题标题】:How to build an anonymous recursive function in PHP? [duplicate]如何在 PHP 中构建匿名递归函数? [复制]
【发布时间】:2021-08-03 01:44:56
【问题描述】:

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


这不起作用,因为 $greet 在被调用时是未知的。

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

$greet('World');
?>

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

那么,如何在 PHP 中正确地构建一个匿名递归函数呢?甚至可能吗?如果有,怎么做?

【问题讨论】:

  • 这能回答你的问题吗? Anonymous recursive PHP functions
  • @El_Vanja 是的,非常感谢。使用此问题的标题搜索时未显示。
  • 小提示:Google 搜索对于构造为句子的查询效果更好(将您的问题标题复制并粘贴到其中,您会看到)。对于内部 SO 搜索,最好只输入关键字(例如[php] anonymous recursive function)。

标签: php recursion anonymous-function


【解决方案1】:

是的,你可以。你需要通过引用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-29
    • 2010-10-03
    • 2022-06-20
    • 1970-01-01
    • 2011-10-26
    • 2015-11-21
    • 2011-04-22
    • 2020-09-24
    相关资源
    最近更新 更多