作品:
$t = function($x,$y) use (&$t){
...
}不起作用:
$t = function($x,$y) use ($t){
...
}为什么我必须将函数本身作为引用传递?
发布于 2013-02-25 17:07:29
也许这会有所帮助:
$f = 42;
$f = function() use ($f)
{
var_dump($f);
};
$f();输出42。
在定义函数并将其分配给$f之前,命中use()。因此,如果您不通过引用传递,您将访问创建函数之前的变量。在本例中,为42。在您的示例中,为空。
通过传递一个引用,您将在调用函数时获得$f的值,这将是您所期望的匿名函数(假设您没有重新分配$f)。
发布于 2013-02-25 16:35:28
传递引用变量意味着您正在访问该作用域中的相同变量。
引用变量指向先前创建的同一变量。
示例
<?php
$a = 10;
$b = &$a;
function change_b($pass)
{
$b = $pass++;
}
echo $b."<br />";
change_b(&$a);
echo $b;
?>上面的代码将输出10,然后输出11。
递归函数必须一次又一次地访问相同的资源,这比复制值要高效得多。
https://stackoverflow.com/questions/15062817
复制相似问题