Creates a select form input.
echo Form::select('country', $countries, $country);
string Core_Form::select( string $name [, array $options = null , mixed $selected = null , array $attributes = null ] )
参数列表
参数 类型 描述 默认值 $namestringInput name $optionsarrayAvailable options null $selectedmixedSelected option string, or an array of selected options null $attributesarrayHtml attributes null 
string public static function select($name, array $options = null, $selected = null, array $attributes = null)
{
    // Set the input name
    $attributes['name'] = $name;
    if (is_array($selected))
    {
        // This is a multi-select, god save us!
        $attributes['multiple'] = 'multiple';
    }
    if (!is_array($selected))
    {
        if ($selected === null)
        {
            // Use an empty array
            $selected = array();
        }
        else
        {
            // Convert the selected options to an array
            $selected = array((string)$selected);
        }
    }
    if (empty($options))
    {
        // There are no options
        $options = '';
    }
    else
    {
        foreach ($options as $value => $name)
        {
            if (is_array($name))
            {
                // Create a new optgroup
                $group = array('label' => $value);
                // Create a new list of options
                $_options = array();
                foreach ($name as $_value => $_name)
                {
                    // Force value to be string
                    $_value = (string)$_value;
                    // Create a new attribute set for this option
                    $option = array('value' => $_value);
                    if (in_array($_value, $selected))
                    {
                        // This option is selected
                        $option['selected'] = 'selected';
                    }
                    // Change the option to the HTML string
                    $_options[] = '<option' . HTML::attributes($option) . '>' . HTML::chars($_name, false) . '</option>';
                }
                // Compile the options into a string
                $_options = "\n" . implode("\n", $_options) . "\n";
                $options[$value] = '<optgroup' . HTML::attributes($group) . '>' . $_options . '</optgroup>';
            }
            else
            {
                // Force value to be string
                $value = (string)$value;
                // Create a new attribute set for this option
                $option = array('value' => $value);
                if (in_array($value, $selected))
                {
                    // This option is selected
                    $option['selected'] = 'selected';
                }
                // Change the option to the HTML string
                $options[$value] = '<option' . HTML::attributes($option) . '>' . HTML::chars($name, false) . '</option>';
            }
        }
        // Compile the options into a single string
        $options = "\n" . implode("\n", $options) . "\n";
    }
    return '<select' . HTML::attributes($attributes) . '>' . $options . '</select>';
}