<?
/* [関数名] make_sel_opts
* [機 能] 連想配列からプルダウンを生成
* [説 明] 連想配列のキーを1グループとしてoptgroupタグで括る。
* そのキーの値である配列の値をoptionのtextとして生成した
* プルダウンのHTML文を返す。optionのvalueには'0'からの連番を振る。
* [引 数]
* @param array $arr 連想配列
* @param string $selected デフォルトで選択するインデックス番号(デフォルトは'0')
* @param string $funcChk OnChangeイベントなどを記述(デフォルトは'')
* [返り値]
* @return string $htm 生成されたHTML文
* エラーの場合はFALSEを返す
*/
function make_sel_opts($arr, $selected=0, $funcChk=""){
$idx=0;
if (!is_array($arr)) return false;
$htm="<select ".$funcChk.">\n";
foreach ($arr as $k1=>$v1){
if (is_array($v1)) {
$htm.="<optgroup label='".$k1."'>\n";
foreach($v1 as $v2){
$htm.="<option value='".$idx."'".(($idx==$selected) ? " selected" : "")." style='margin-left:1em;'>".$v2."</option>\n";
$idx++;
}
$htm.="</optgroup>\n";
}else{
$htm.="<option value='".$idx."'".(($idx==$selected) ? " selected" : "").">".$v1."</option>\n";
$idx++;
}
}
$htm.="</select>\n";
return $htm;
}
?>
<form>
<?
$food_ary=Array(
"▼選択してください▼",
"fruit"=>Array(
"apple","banana","grape","orange"),
"vegitable"=>Array("potato","tomato"),
"milk"
);
$funcChk="onChange=\"alert(this.value+'='+this[this.selectedIndex].text)\"";
echo make_sel_opts($food_ary, 2, $funcChk)
?>
</form>