2014-02-06 116 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

相關問題