135

我在 PHP 中使用匿名函数,并意识到它们似乎无法访问它们之外的变量。有没有办法解决这个问题?

例子:

$variable = "nothing";

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

echo $variable;  //output: "nothing"

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

4

2 回答 2

332

是的,使用闭包

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

请注意,为了使您能够$variable在匿名函数范围之外修改和检索修改后的值,必须在闭包中使用&.

于 2012-07-10T19:31:42.297 回答
2

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

$variable = "nothing";
functionName($someArgument, fn() => $variable = "something");
于 2021-09-15T16:43:30.347 回答