前几天,我收到了一组庞大的数组,并被告知要制作一个带有一堆或选择/单选按钮的 HTML 页面,所以我编写了一些简单的函数来简化事情。
这是我生成非常大的 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 视图中加载的,以构建用于输入设置的巨大 UI。这个函数在一个 lib 文件中,并与require_once
另一个包含我使用的所有数组的文件一起加载。数据库仅保存这些设置的当前值,并且数组包含各种选择/单选/下拉菜单的所有可能选项,并且出于语言/翻译原因集中在单独的文件中。
澄清人们提出的一些问题,$name
只包含所用数组的名称以及 HTML 选择/收音机/复选框输入的名称。$evalThis
是一个包含数据库当前拥有的值的数组。