在php中可以通过索引访问当前数组的元素吗? 例如:
$arr = array(
'index1' => function() {
echo 'foo'; //foo
},
'index2' => function() {
$arr['index1']() // foo ??????????
echo 'bar'; //bar
}
);
如何在$arr['index1']()
中致电$arr
?
答案 0 :(得分:4)
这里的问题是$arr
是在函数外部定义的变量,因此无法从函数中访问它。
尝试使用$arr
将use ($arr)
变量导入closure很有诱惑力,但这不会起作用,因为$arr
实际上并未定义$arr
你定义你的功能的时间。
只要'index2' => function() {
global $arr;
$arr['index1'](); // foo
echo 'bar'; //bar
}
真的是全局变量,你就可以更新这样的函数来使它工作:
'index2' => function($a) {
$a['index1'](); // foo
echo 'bar'; //bar
}
更好的想法是将数组作为参数传递给函数,如下所示:
$arr['index2']($arr);
......并且这样称呼它:
{{1}}