在匿名函数中访问全局变量
在 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中文网其他相关文章!