PHP 从自身内部引用数组,在 Closure 成员中

PHP Referencing array from within itself inside a Closure member

提问人:Samik Sengupta 提问时间:12/26/2018 更新时间:12/26/2018 访问量:50

问:

我有一个带有 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

我不确定为什么不起作用,因为我已经将其定义为定义 Closure 成员的行之前的单独语句。似乎我无法从我所知道的数组内部引用该数组。$a

能做到吗?

php 数组 闭包 anonymous-function

评论

0赞 u_mulder 12/26/2018
你的函数对 一无所知。$a

答:

2赞 Yogendrasinh 12/26/2018 #1

希望下面的代码对您有所帮助。

<?php

$a = [];

$a['const'] = 5;

$a['closure'] = function($a) {
    return ($a['const'] * 2);
};

print_r($a['closure']($a));
4赞 Maksym Fedorov 12/26/2018 #2

您的代码不起作用,因为您没有在匿名函数中传递变量。您可以在从父作用域继承变量的帮助下将变量传递到函数中(使用构造)。例如:$a$ause

$a = [];
$a['const'] = 5;
$a['closure'] = function() use ($a){
    return ($a['const'] * 2);
};

print_r($a['closure']());