如何使用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: foo
和Undefined variable: bar
,然后显示''
数组。
答案 0 :(得分:2)
我认为这是一个范围问题。
添加global ${$a}
会有所帮助:
print_r(array_map(function($a) {global ${$a};return ${$a};}, $arg_array)); //doesn't
至少如果外部块是全局命名空间......
否则这种动态创建变量的名称并不是一个好兆头...这种情况通常可以转换为数组,并且数组的生命更容易。