有一天,我被賦予了這個龐大的數組集合,並被告知用一堆或選擇/單選按鈕創建一個HTML頁面,所以我寫了一些簡單的函數來簡化事情。在簡單的PHP函數中使用變量
這是我的函數來生成非常大的HTML選擇。
function genSelect($name) {
$selectReturn = '<select name="'.$name.'">';
foreach(${$name} as $value=>$text){
$selectReturn .= '<option value="'.$value.'"';
if($evalThis->loaded_settings[$name]['value']==$value)
$selectReturn .= ' SELECTED ';
$selectReturn .= '>'.$text.'</option>';
}
$selectReturn .= '</select>';
return $selectReturn;
}
這似乎並沒有工作,因爲${$name}
只是像我期望它太不叫什麼/工作。我已經在我通過函數調用傳遞數組的地方工作,但它一直在竊聽我在做這個代碼中的變量變量時做了什麼錯誤。
編輯:爲了給一些上下文,這是在joomla視圖中加載構建巨大的用戶界面進入設置。這個函數在一個lib文件中,並且與另一個包含我使用的所有數組的文件一起被裝入一個require_once
。數據庫僅保存這些設置的當前值,並且數組包含各種選擇/無線電/下拉菜單的所有可能選項,並且由於語言/翻譯原因而被集中在單獨的文件中。
澄清人們詢問的一些問題,$name
只包含所用數組的名稱以及HTML選擇/收音機/複選框輸入的名稱。 $evalThis
是包含數據庫當前擁有的值的數組。
你能舉一個例子,說明$ name中的數據是什麼樣的? – FlipMcF 2012-01-03 22:35:53
我只是問:'$ evalThis'做了什麼?這聽起來有點「邪惡」。 – PeeHaa 2012-01-03 22:38:25
試試這個:'$ evalThis = new stdClass(); $ evalThis-> loaded_settings = array('abc'=> array('value'=> 1));' – 2012-01-03 22:49:05