2012-03-28 108 views
0

我希望能夠傳遞一個字符串(「['parent_array'] ['child_array']」)到一個函數,然後將該字符串和「my_array」拉到它的前面然後創建一個變量變量。變量變量,構建一個數組變量

然後裏面的函數我print_r($$字符串)並沒有出來。請參閱下面的代碼以獲得更好的解釋。

// DOES NOT WORK 
$string1 = "my_array['parent_array']['child_array']"; 
print_r($$string1); //prints nothing. 

// WORKS 
$string2 = "test"; 
$test = "This will be printed!"; 
print_r($$string2); //prints "This will be printed! 

// WORKS 
print_r($my_array['parent_array']['child_array']); 
+2

我可以問你爲什麼要建立變量這種方式?我可以賭一大筆錢,因爲有一個比*(不寒而慄)變量更合理的方法。 – JJJ 2012-03-28 08:51:22

+2

和/或eval,我打賭其中一個答案後來實際上會推薦使用eval – 2012-03-28 08:52:46

+2

@andreas沒有儘快說完成... – JJJ 2012-03-28 08:54:42

回答

0

變量變量是一個醜陋的,醜陋的黑客攻擊。

使用eval

例子:

$expr = "\$my_array['parent_array']['child_array']"; 
$val = 'not assigned'; 
eval("\$val = $expr;"); 
print_r($val); 

但請按照他們對evaling用戶提供的代碼的危險警告。

更新時間:與例如

+0

我能舉一個例子,看看這是怎麼回事? – halliewuud 2012-03-28 08:59:59

+2

這兩個都是醜陋的黑客恕我直言。幾乎總是有一個更好的解決方案。 OP的真正問題是:爲什麼你認爲你需要它? – PeeHaa 2012-03-28 09:40:45

+0

@RepWhoringPeeHaa看這裏:http://pastebin.com/bbs4iiMC 我想能夠傳遞一個變量到函數來替換「line29。$ arrXml ['Assignments'] ['Assignment']」 – halliewuud 2012-03-28 09:49:57