匿名函数中的 PHP 变量

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

例:

$variable = "nothing";

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

echo $variable;  //output: "nothing"

这将输出“无”。匿名函数有没有办法访问 ?$variable


答案 1

是的,使用闭包

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

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


答案 2

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

$variable = "nothing";
functionName($someArgument, fn() => $variable = "something");

推荐