首頁  >  文章  >  後端開發  >  如何在 PHP 中的匿名函數中修改全域變數?

如何在 PHP 中的匿名函數中修改全域變數?

Patricia Arquette
Patricia Arquette原創
2024-11-19 00:44:02953瀏覽

How Can I Modify a Global Variable from Within an Anonymous Function in PHP?

匿名函數中存取全域作用域變數

在PHP 中,匿名函數通常繼承封閉函數的本地作用域或全域作用域,如果在任何函數之外定義。但是,當您嘗試從匿名函數內修改全域作用域變數時,可能會遇到問題。

修改全域作用域變數

請考慮以下範例:

$variable = "nothing";

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

echo $variable;  // Output: "nothing"

儘管嘗試在匿名函數中修改$variable,但輸出仍然是“無”。這是因為匿名函數會建立自己的作用域,並且不直接繼承全域作用域。

解決方案:閉包

要解決此限制,您可以使用閉包。閉包可讓您將變數從封閉範圍捕獲到新範圍中。要從匿名函數中修改全域範圍的變量,請使用以下語法:

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

透過在變數名稱之前新增use 並使用& 引用它,您可以建立一個透過引用擷取變數的閉包,允許在匿名函數內進行修改。

結論

使用閉包使您可以從匿名函數內存取和修改全域範圍的變量,克服了創建新函數的限制匿名函數內的作用域。透過引用捕獲變量,您可以執行將在匿名函數範圍之外持續存在的修改。

以上是如何在 PHP 中的匿名函數中修改全域變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn