首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我必须在PHP的递归匿名函数中传递匿名函数作为引用?

为什么我必须在PHP的递归匿名函数中传递匿名函数作为引用?
EN

Stack Overflow用户
提问于 2013-02-25 16:26:10
回答 2查看 154关注 0票数 1

作品:

代码语言:javascript
复制
 $t = function($x,$y) use (&$t){
...
}

不起作用:

代码语言:javascript
复制
 $t = function($x,$y) use ($t){
...
}

为什么我必须将函数本身作为引用传递?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-25 17:07:29

也许这会有所帮助:

代码语言:javascript
复制
$f = 42;
$f = function() use ($f)
{
  var_dump($f);
};
$f();

输出42。

在定义函数并将其分配给$f之前,命中use()。因此,如果您不通过引用传递,您将访问创建函数之前的变量。在本例中,为42。在您的示例中,为空。

通过传递一个引用,您将在调用函数时获得$f的值,这将是您所期望的匿名函数(假设您没有重新分配$f)。

票数 2
EN

Stack Overflow用户

发布于 2013-02-25 16:35:28

传递引用变量意味着您正在访问该作用域中的相同变量。

引用变量指向先前创建的同一变量。

示例

代码语言:javascript
复制
<?php

    $a = 10;

    $b = &$a;

    function change_b($pass)
    {
        $b = $pass++;
    }

    echo $b."<br />";

    change_b(&$a);

    echo $b;

?>

上面的代码将输出10,然后输出11。

递归函数必须一次又一次地访问相同的资源,这比复制值要高效得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15062817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档