2013-07-07 165 views
0

我很困惑如何使用$$來使用字符串作爲變量,主要是當涉及到使用字符串引用數組索引。 考慮以下情況:變量與數組變量

$colors = array(
'r'=>"red", 
'b'=>"blue" 
); 
$vr = "colors[r]"; //I tried even this "color['r']" 
echo $$vr; // I tried even this ${$vr} 

誰能告訴,如果它是可以做到以上。 預期o/p是使用「color [r]」作爲字符串的紅色,然後將其用作變量。

+4

變量變量比普通數組/關聯數組更復雜,功能也更少。只是不要使用它們。 – Quentin

+0

http://stackoverflow.com/questions/4179489/double-dollar-sign-php –

+0

可以有任何其他的解決方案,而不是僅僅使用普通數組/關聯數組 –

回答

0

你不能直接這樣做。考慮以下幾點:

$varName = array_shift(explode('[', $vr)); 

foreach($$varName as $key=>$value){ 
    echo $key.": ".$value."<br />"; 
} 

這會打印出:

r: red 
b: blue 

變量變量只是第一部分(顏色)。您不能在此包含密鑰。

+0

謝謝mnagel ...對不起,忘記代碼標籤... – Swissdude

+0

數組可以更深,到下一級,即它可能是, $顏色[ 'R'] [ '蔭'。如果出現以下情況會怎麼樣: $ vr =「colors ['r'] ['shade']」。它的動態和陣列的深度可以是任何東西。 –

+0

然後你必須編寫你自己的解析器。但在我深入研究之前:這一切的目標是什麼?你爲什麼在做你在做什麼? ;) – Swissdude