我試圖找出爲什麼這個工程:PHP:使用變量名,不適用於數組?
$joe = "hey joe";
$something = "joe";
print_r(${$something});
但這並不:
$joe["where_you_going"] = "hey joe";
$something = "joe[where_you_going]";
print_r(${$something});
這是爲什麼?有沒有辦法做到我在第二個例子中嘗試的?
我試圖找出爲什麼這個工程:PHP:使用變量名,不適用於數組?
$joe = "hey joe";
$something = "joe";
print_r(${$something});
但這並不:
$joe["where_you_going"] = "hey joe";
$something = "joe[where_you_going]";
print_r(${$something});
這是爲什麼?有沒有辦法做到我在第二個例子中嘗試的?
變量變量語法不允許這樣做。
您的情況是否有意義,而不是做這些事情之一?
使用一個變量作爲數組索引:
$joe["where_you_going"] = "hey joe";
$something = "where_you_going";
print_r($joe[$something]);
使用一個變量作爲陣列的名稱和另一個作爲索引:
$joe["where_you_going"] = "hey joe";
$something1 = "joe";
$something2 = "where_you_going";
print_r(${$something1}[$something2]);
使用eval來評估整個表達式:
$joe["where_you_going"] = "hey joe";
$something = '$joe["where_you_going"]';
print_r(eval("return {$something};"));
不,你不能那樣做。
「變量變量」的PHP思路通常比數組更好。
變量變量是PHP中的一個特殊功能,允許您的第一個示例:http://php.net/manual/en/language.variables.variable.php。這不是一個評估,因此它在第二個例子中不起作用。
在第二個示例joe [where_you_going]中有一個數組的名稱,括號運算符和索引的名稱。由於它們需要操作(索引到數組中),而不僅僅是命名,所以不能組合使用。你可以這樣做:
$joe["where_you_going"] = "hey joe";
$something = "joe";
$something_else = "where_you_going";
print_r(${$something}[$something_else]);
這兩件事都是可怕的語言「特徵」的例子,只有在絕對沒有其他選擇時才應該使用這些特徵。 – 2010-10-31 22:06:28
在一個完美的世界裏,這將是因爲你不應該這樣做。 – delnan 2010-10-31 22:10:09