在匿名函數中存取全域變數
在PHP 中,匿名函數通常在自己獨立的作用域內運行,限制了它們存取定義的變數的能力別處。在使用全域變數時,這可能會成為一個障礙。
挑戰:
考慮提供的範例:
$variable = "nothing"; functionName($someArgument, function() { $variable = "something"; }); echo $variable; //output: "nothing"
在這種情況下,匿名函數無法在其範圍之外修改$ variable的值,導致輸出剩餘「什麼都沒有。」
解決方案:閉包
為了克服這個挑戰,可以使用閉包。閉包是一個函數,即使在退出作用域後,它仍保留對其封閉作用域的變數的存取權限。
要修改匿名函數中的全域作用域變量,請使用以下語法:
functionName($someArgument, function() use(&$variable) { $variable = "something"; });
透過在匿名函數中使用“use(&$variable)”,將對全域$變數的引用傳遞到函數中。 “&”表示我們正在傳遞對變數的引用,允許我們在函數內修改它的值。
現在,當匿名函數執行時,它可以成功更改 $variable 的值,並且修改後的值將保留在函數範圍之外。
以上是PHP中匿名函數如何修改全域變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!