先日、この膨大な配列のセットが与えられ、たくさんのボタンまたは選択/ラジオボタンを使用して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}
単に何も呼び出さない/私が期待するように機能するからです。関数呼び出しを介して配列を渡すだけの回避策はすでにありますが、このコードの変数変数で間違っていたことを悩ませています。
編集:いくつかのコンテキストを与えるために、これは設定を入力するための巨大なUIを構築するためにjoomlaビューにロードされています。この関数はlibファイルにあり、require_once
使用するすべての配列を含む別のファイルと一緒にロードされます。データベースはこれらの設定の現在の値のみを保持し、配列にはさまざまな選択/ラジオ/ドロップダウンメニューのすべての可能なオプションが含まれており、言語/翻訳の理由から別のファイルに一元化されています。
人々が尋ねたいくつかの質問を明確$name
にするために、使用された配列の名前とHTML select / radio/checkbox入力の名前が含まれているだけです。$evalThis
データベースが現在持っている値を含む配列です。