在Php中将用户数据作为对array_walk_recursive的引用传递

mag*_*_al 4 php arrays reference

我尝试通过引用传递第三个参数Phps array_walk_recursive

$field = 'foo';

array_walk_recursive($config, function($value, $key, &$field) {

    $field = 'bar';

}, $field);

echo $field // 'foo'
Run Code Online (Sandbox Code Playgroud)

为什么还$field没有'foo',虽然它已作为参考传递给函数?

mag*_*_al 9

我将自己回答:

根据匿名函数php文档,必须在函数头中使用关键字定义闭包的继承变量,该关键字use留下我的示例:

function($value, $key) use (&$field) { ... }
Run Code Online (Sandbox Code Playgroud)

虽然回调函数继承了use从其父项声明的参数,这意味着从范围/函数中已经声明(未执行).