2014-02-06 117 views
0

如何使用array_map将变量名称数组转换为这些名称值的数组?例如:带有变量名称数组的array_map

$arg_array = array('foo', 'bar'); 
$foo = "asdf"; 
$bar = "qwer"; 

print_r(array_map(function($a) {return ${$a};}, $arg_array)); //doesn't work 

var_dump(${$arg_array[0]}); //works 

好像它应该是简单的,但array_map函数返回Undefined variable: fooUndefined variable: bar,然后示出了''阵列。

回答

1

我认为这是一个范围界定问题。

添加global ${$a}将帮助:

print_r(array_map(function($a) {global ${$a};return ${$a};}, $arg_array)); //doesn't 

至少如果外块是全局命名空间...

否则这种创造的变量名的动态是不是一个好兆头.. 。这些情况通常可以转换为数组,数组的生活更容易。

+0

Friggin的范围。是的,就是这样。 – mounty

相关问题