PHP 在 Closure 成员内部引用数组
PHP Referencing array from within itself inside a Closure member
我有一个带有 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 成员的行之前的单独语句。看来我无法从我知道的内部引用数组。
可以做到吗?
希望下面的代码对您有所帮助。
<?php
$a = [];
$a['const'] = 5;
$a['closure'] = function($a) {
return ($a['const'] * 2);
};
print_r($a['closure']($a));
您的代码不起作用,因为您没有在匿名函数中传递 $a
变量。您可以将 $a
变量传递给函数,帮助从父作用域继承变量(使用 use
构造)。例如:
$a = [];
$a['const'] = 5;
$a['closure'] = function() use ($a){
return ($a['const'] * 2);
};
print_r($a['closure']());
我有一个带有 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 成员的行之前的单独语句。看来我无法从我知道的内部引用数组。
可以做到吗?
希望下面的代码对您有所帮助。
<?php
$a = [];
$a['const'] = 5;
$a['closure'] = function($a) {
return ($a['const'] * 2);
};
print_r($a['closure']($a));
您的代码不起作用,因为您没有在匿名函数中传递 $a
变量。您可以将 $a
变量传递给函数,帮助从父作用域继承变量(使用 use
构造)。例如:
$a = [];
$a['const'] = 5;
$a['closure'] = function() use ($a){
return ($a['const'] * 2);
};
print_r($a['closure']());