也就是说$test这个变量并不能被识别,大家有办法能在匿名函数中递归函数本身吗?

php 5.2以后增加了匿名函数这个功能,但我在匿名函数递归时发现了问题

<?php$test = NULL;$test = function ($a) use ($test) {    echo $a;    $a --;    if ($a > 0) {        return $test($a);
    }
};$test(10);

正如上面的代码所示,我想在$test这个匿名函数里递归调用它自己,但是我发现在调用后会出现

Fatal error: Function name must be a string in /Library/WebServer/Documents/test.php on line 9


哔哔one
浏览 94回答 2
2回答

catspeake

In order for it to work, you need to pass $test as a reference$test&nbsp;=&nbsp;function&nbsp;($a)&nbsp;use&nbsp;(&$test)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;... }

炎炎设计

php5.4下通过$test&nbsp;=&nbsp;NULL;$test&nbsp;=&nbsp;function&nbsp;($a)&nbsp;use&nbsp;(&$test)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$a;&nbsp;&nbsp;&nbsp;&nbsp;$a&nbsp;--;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($a&nbsp;>&nbsp;0)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$test($a); &nbsp;&nbsp;&nbsp;&nbsp;} };$test(10);
打开App,查看更多内容
随时随地看视频慕课网APP