src/Peach/Markup/HtmlHelper.php
public function createSelectElement($current, array $candidates, array $attr = array())
    {
        $currentText = Values::stringValue($current);
        $select      = new ContainerElement("select");
        $select->setAttributes($attr);
        $select->appendNode(self::createOptions($currentText, $candidates));
        return $select;
    }
public function createSelectElement($current, array $candidates, array $attr = array())
    {
        $currentText = Values::stringValue($current);
        $select      = new ContainerElement("select");
        $select->setAttributes($attr);
        $select->appendNode(self::createOptions($currentText, $candidates));
        return $select;
    }
HTML の select 要素を生成します.
第 1 引数にはデフォルトで選択されている値,
第 2 引数には選択肢を配列で指定します.
キーがラベル, 値がそのラベルに割り当てられたデータとなります.

引数を二次元配列にすることで, 一次元目のキーを optgroup にすることが出来ます.
以下にサンプルを挙げます.
<code>
$candidates = array(
"Fruit"   => array(
"Apple"  => 1,
"Orange" => 2,
"Pear"   => 3,
"Peach"  => 4,
),
"Dessert" => array(
"Chocolate" => 5,
"Doughnut"  => 6,
"Ice cream" => 7,
),
"Others" => 8,
);
$select = Html::createSelectElement("6", $candidates, array("class" => "sample", "name" => "favorite"));
</code>
この要素を出力すると以下の結果が得られます.
<code>
<select class="sample" name="favorite">
<optgroup label="Fruit">
<option value="1">Apple</option>
<option value="2">Orange</option>
<option value="3">Pear</option>
<option value="4">Peach</option>
</optgroup>
<optgroup label="Dessert">
<option value="5">Chocolate</option>
<option value="6" selected>Doughnut</option>
<option value="7">Ice cream</option>
</optgroup>
<option value="8">Others</option>
</select>
</code>

@param  string $current    デフォルト値
@param  array  $candidates 選択肢の一覧
@param  array  $attr       追加で指定する属性 (class, id, style など)
@return ContainerElement HTML の select 要素