2012-07-10 111 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