ホーム > プログラミング > PHPで連想配列からセレクトボックスを生成する自作関数

PHPで連想配列からセレクトボックスを生成する自作関数

2010 年 11 月 16 日 コメントをどうぞ コメント

以前に作成したので忘備録として。

毎回毎回セレクトボックスのHTMLを書くのが面倒だったので関数化してみました。


– – – – –

[関数]

/**
 * 連想配列からセレクトボックスを生成します。
 * @param $inputName name属性
 * @param $srcArray 元となる連想配列
 * @param $selectedIndex selected属性を付加するインデックス
 * @return String
 */

function arrayToSelect($inputName, $srcArray, $selectedIndex = "") {
    $temphtml = '<select name="'. htmlspecialchars($inputName). '">'. "\n";
    foreach ($srcArray as $key => $val) {
        if ($selectedIndex == $key) {
            $selectedText = ' selected="selected"';
        } else {
            $selectedText = '';
        }
        $temphtml .= '<option value="'. htmlspecialchars($key). '"'. $selectedText. '>'. htmlspecialchars($val). '</option>'. "\n";
    }
    $temphtml .= '</select>'. "\n";
    return $temphtml;
}

[使用例]

$tempArray = array(
                    "apple"     =>  "アップル",
                    "banana"    =>  "バナナ",
                    "orange"    =>  "オレンジ",
                );
echo arrayToSelect("fruit", $tempArray);

[出力例]

<select name="fruit">
<option value="apple">アップル</option>
<option value="banana">バナナ</option>
<option value="orange">オレンジ</option>
</select>

[表示例]

 

このような形で利用できます。
都道府県の選択など、表示すべき項目が多い場合に特に役立つかと思います。

さらに$_GET["fruit"]"orange"が入っていると仮定すると

echo arrayToSelect("fruit", $tempArray, $_GET["fruit"]);

のように記述すれば、

<select name="fruit">
<option value="apple">アップル</option>
<option value="banana">バナナ</option>
<option value="orange" selected="selected">オレンジ</option>
</select>

となりますので、ユーザが指定した項目を繰り返し表示でき便利です。
(もちろん引数の$_GET["fruit"]の部分を普通の文字列に置き換えて、
セレクトボックスの初期値を固定化する事も可能です。)

よろしければお試しくださいね。

カテゴリー: プログラミング タグ: ,
  1. コメントはまだありません。
  1. トラックバックはまだありません。