На днях мне дали этот огромный набор массивов и сказали сделать HTML-страницу с кучей или кнопками select / radio, чтобы я написал несколько простых функций, чтобы упростить вещи.
Это моя функция для генерации очень больших выделений 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
вместе с другим файлом, содержащим все используемые мной массивы. База данных содержит только текущие значения этих настроек, а массивы содержат все возможные опции для различных меню select / radio / dropdown и централизованы в отдельном файле по причинам языка / перевода.
Разъясняя некоторые вопросы, которые задавали люди, $name
просто содержит имя используемого массива, а также имя ввода HTML select / radio / checkbox. $evalThis
- это массив, содержащий значения, которые база данных имеет в настоящее время.