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']());