2012-07-10 98 views
65

我在PHP中使用匿名函数,并意识到他们似乎并没有达到他们之外的变量。 有什么办法可以解决这个问题吗?匿名函数中的php变量

例子:

$variable = "nothing"; 

functionName(someArgument, function() { 
    $variable = "something"; 
}); 

echo $variable; 

将输出: “没什么”。有没有什么办法,匿名函数可以访问$变量?

回答

168

是,use a closure

functionName(someArgument, function() use(&$variable) { 
    $variable = "something"; 
}); 

注意,为了您能够修改$variable和检索匿名函数的范围之外修改后的值,它必须使用&关闭中引用。

+1

太棒了!从来没有见过.. =) – einord 2012-07-10 19:33:08

+0

这是新的!它是PHP 5.3中的新语法。 – 2012-07-10 19:33:32

+1

@Rocket所以,公平地说,是真正的匿名函数语法(与'create_function()'相反),并且'use'关键字在[同一文档页面](http:// php。 net/manual/en/functions.anonymous.php)描述它们。 – DaveRandom 2012-07-10 19:36:48