PHPで連想配列からセレクトボックスを生成する自作関数
以前に作成したので忘備録として。
毎回毎回セレクトボックスの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;
}
* 連想配列からセレクトボックスを生成します。
* @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);
"apple" => "アップル",
"banana" => "バナナ",
"orange" => "オレンジ",
);
echo arrayToSelect("fruit", $tempArray);
[出力例]
[表示例]
このような形で利用できます。
都道府県の選択など、表示すべき項目が多い場合に特に役立つかと思います。
さらに$_GET["fruit"]
に"orange"
が入っていると仮定すると
echo arrayToSelect("fruit", $tempArray, $_GET["fruit"]);
のように記述すれば、
となりますので、ユーザが指定した項目を繰り返し表示でき便利です。
(もちろん引数の$_GET["fruit"]
の部分を普通の文字列に置き換えて、
セレクトボックスの初期値を固定化する事も可能です。)
よろしければお試しくださいね。
Recent Comments