修改匿名函数内的全局变量

问题描述 投票:0回答:2

我在 PHP 中玩弄匿名函数,发现它们似乎无法访问外部变量。 有什么办法可以解决这个问题吗?

例子:

$variable = "nothing";

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

echo $variable;  //output: "nothing"

这将输出“无”。匿名函数有什么方法可以访问

$variable

php function global-variables pass-by-reference anonymous
2个回答
361
投票

是的,使用闭包

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

注意,为了能够修改

$variable
并在匿名函数范围之外检索修改后的值,必须在闭包中使用
&
引用它。


5
投票

如果您的函数很短并且是单线性的,您可以使用箭头函数,从 PHP 7.4 开始:

$variable = "nothing";
functionName($someArgument, fn() => $variable = "something");
© www.soinside.com 2019 - 2024. All rights reserved.