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