匿名函数中的 PHP 变量

我在 PHP 中尝试使用匿名函数,发现它们似乎无法到达函数之外的变量。 有什么办法可以解决这个问题吗?

例如:

$variable = "nothing";


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


echo $variable;  //output: "nothing"

这将输出“无”。是否有任何方法,匿名函数可以访问 $variable

57029 次浏览

是的,做个了结:

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

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

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

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