119 我在玩PHP中的匿名函数,并意识到它们似乎没有到达它们之外的变量。有什么办法可以解决这个问题? 例: $variable = "nothing"; functionName($someArgument, function() { $variable = "something"; }); echo $variable; //output: "nothing" 这将输出“无”。匿名函数有什么方法可以访问$variable? php function variables global-variables anonymous — 艾诺德 source
277 是的,使用闭包: functionName($someArgument, function() use(&$variable) { $variable = "something"; }); 请注意,为了使您能够$variable在匿名函数范围之外修改和检索修改后的值,必须在闭包中使用对其进行引用&。 — 尼克 source 这是新的!这是PHP 5.3中的新语法。 — 火箭Hazmat 1 @Rocket因此,公平地说,是真正的匿名函数语法(与相对create_function()),并且该use关键字在描述它们的同一文档页面上被记录(不好)。 — DaveRandom 4 对于那些可能不知道的人的快速注释:您可以&在传递对象时将其删除,因为它们始终是通过引用传递的……并且不要忘记您的类型提示:)例如:function() use (PDO $pdo) { — keyboardSmasher @Alliswell不,仅适用于对象,否则您需要通过引用来修改变量。请参阅此示例。 — 尼克