匿名函数中的PHP变量

ein*_*ord 106 php variables anonymous function global-variables

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

例:

$variable = "nothing";

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

echo $variable;  //output: "nothing"
Run Code Online (Sandbox Code Playgroud)

这将输出"无".有没有办法匿名功能可以访问$variable

nic*_*ckb 246

是的,使用一个闭包:

functionName($someArgument, function() use(&$variable) {
  $variable = "something";
});
Run Code Online (Sandbox Code Playgroud)

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

  • @DaveRandom:`use`关键字很奇怪. (9认同)
  • 真棒!之前没见过.. =) (5认同)
  • 快速注意那些可能不知道的人:你可以在传递一个对象时删除`&`,因为它们总是通过引用传递...并且不要忘记你的类型提示:)例如:`function()use( PDO $ pdo){` (3认同)
  • 我喜欢这个节目与我相关的语法(因为我继续使用像javascript这样的PHP):`$ display = function($ header,$ files)use(&$ table_ids){...}; ` (2认同)