来自Closure成员内部的PHP引用数组

时间:2018-12-26 11:14:30

标签: php arrays closures anonymous-function

我有一个带有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成员的行之前将其定义为单独的语句。看来我无法从自己知道的内部引用数组。

能做到吗?

2 个答案:

答案 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));