2013-07-05 41 views
4

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

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

如何调用$arr$arr['index1']()

+2

我不知道那是什么,b ut无效php – 2013-07-05 04:07:32

+1

@Dagon:不是吗? – zerkms

+0

这是有效的PHP,除了缺少分号 – jcsanyi

回答

4

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

这是很有诱惑力的尝试刚刚导入$arr可变进使用use ($arr)closure,但由于$arr实际上不是在你定义你的函数的时间定义,将无法正常工作。

只要$arr确实是一个全球性varable,您可以更新这样的功能,使其工作:

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

一个更好的想法,不过,是在阵列中作为参数传递给功能,像这样:

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

...并调用它像这样:

$arr['index2']($arr); 
+0

很酷的解决方案。谢谢! – user2552240

+0

注意这个语法需要PHCrap 5.4 –

+0

@jcsanyi你还不需要5.4吗? –

相关问题