带有变量名数组的array_map

时间:2014-02-06 16:53:44

标签: php

如何使用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 个答案:

答案 0 :(得分:2)

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

添加global ${$a}会有所帮助:

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

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

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