PHP闭包中未定义的变量

10
以下代码片段返回一堆输入字段,但由于$data被定义在闭包内部,所以我无法设置它们的值。
$row = array_map(function($n) {
    $name = sprintf('point[%0d]', $n+1);
    $value = $data['measurements'][$n];
    return form_input($name, $value, "class='input-mini'");
}, range($i*6, $i*6+5));
我知道全局变量并不好。有什么最好的方法可以避免使用它们吗?

4
使用function($n) use ($data) {。该语句是PHP中用于创建闭包函数的语法,其中$n是闭包函数的参数,而$data是在闭包函数中使用的外部变量。具体来说,use关键字可以将一个变量从外部作用域传递到闭包函数内部,以便在闭包函数中使用。 - air4x
1个回答

25

从父级作用域继承变量

$row = array_map(function($n) use ($data) {
    $name = sprintf('point[%0d]', $n+1);
    $value = $data['measurements'][$n];
    return form_input($name, $value, "class='input-mini'");
}, range($i*6, $i*6+5));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接