我有一个带有Closure成员的数组,该成员在执行过程中的特定时刻被调用,并使用该数组自己的成员执行操作。
$a = [];
$a['const'] = 5;
$a['closure'] = function() {
return ($a['const'] * 2);
};
print_r($a['closure']());
这给出了
NOTICE Undefined variable: a on line number 6
0
我不确定$a
为何不起作用,因为我已经在定义Closure成员的行之前将其定义为单独的语句。看来我无法从自己知道的内部引用数组。
能做到吗?
答案 0 :(得分:4)
您的代码无效,因为您没有在匿名函数中传递$a
变量。您可以将$a
变量传递给函数,以帮助从父范围继承变量(使用use
构造)。例如:
$a = [];
$a['const'] = 5;
$a['closure'] = function() use ($a){
return ($a['const'] * 2);
};
print_r($a['closure']());
答案 1 :(得分:2)
希望以下代码可以为您提供帮助。
<?php
$a = [];
$a['const'] = 5;
$a['closure'] = function($a) {
return ($a['const'] * 2);
};
print_r($a['closure']($a));