4

在 php 中可以通过索引访问当前数组的元素吗?例子:

$arr = array(
    'index1' => function() {
        echo 'foo'; //foo
    },
    'index2' => function() {
        $arr['index1']() // foo ??????????
        echo 'bar';  //bar
    }
);

怎么打电话$arr['index1']()$arr

4

1 回答 1

4

这里的问题是这$arr是一个在函数外部定义的变量,因此不能从函数内部访问它。

尝试使用将$arr变量导入闭包use ($arr)是很诱人的,但这不起作用,因为$arr在定义函数时实际上并没有定义。

只要$arr真的是一个全局变量,您就可以像这样更新函数以使其工作:

'index2' => function() {
    global $arr;
    $arr['index1'](); // foo
    echo 'bar';  //bar
}

不过,一个更好的主意是将数组作为参数传递给函数,如下所示:

'index2' => function($a) {
    $a['index1'](); // foo
    echo 'bar';  //bar
}

...并这样称呼它:

$arr['index2']($arr);
于 2013-07-05T04:09:35.947 回答