PHP & JavaScript Room :: 設置サンプル

実行結果

ソース

<?
/* [関数名] 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_ary2$funcChk)
?>
</form>

polarized women