0
以某種形式使用form_dropdown使用下列選項:形式幫助下拉微調
<select name="depto">
<option value="">[todos los departamentos]</option>
<option value="0001">First</option>
<option value="01">Second</option>
</select>
當領域擁有的空任何不同的值,即「0001」或「01」,在兩種情況下form_dropdown生成
<select name="depto">
<option value="">[todos los departamentos]</option>
<option selected="selected" value="0001">First</option>
<option selected="selected" value="01">Second</option>
</select>
標記爲選中的2個選項。
查看窗體幫助器,in_array()函數用於檢查值。
我改變了form_helper使用完全匹配來調用in_array(),這是第三個參數爲'true',並開始按照預測工作。
您是否發現該變更有任何問題? 的微小變化都標有/// HERE THE ,true ADDED
下面是函數的代碼:
/**
* Drop-down Menu
*
* @access public
* @param string
* @param array
* @param string
* @param string
* @return string
*/
if (! function_exists('form_dropdown'))
{
function form_dropdown($name = '', $options = array(), $selected = array(), $extra = '')
{
if (! is_array($selected))
{
$selected = array($selected);
}
// If no selected state was submitted we will attempt to set it automatically
if (count($selected) === 0)
{
// If the form name appears in the $_POST array we have a winner!
if (isset($_POST[$name]))
{
$selected = array($_POST[$name]);
}
}
if ($extra != '') $extra = ' '.$extra;
$multiple = (count($selected) > 1 && strpos($extra, 'multiple') === FALSE) ? ' multiple="multiple"' : '';
$form = '<select name="'.$name.'"'.$extra.$multiple.">\n";
foreach ($options as $key => $val)
{
$key = (string) $key;
if (is_array($val))
{
$form .= '<optgroup label="'.$key.'">'."\n";
foreach ($val as $optgroup_key => $optgroup_val)
{
$sel = (in_array($optgroup_key, $selected, true)) ? ' selected="selected"' : ''; /// HERE THE ,true added
$form .= '<option value="'.$optgroup_key.'"'.$sel.'>'.(string) $optgroup_val."</option>\n";
}
$form .= '</optgroup>'."\n";
}
else
{
$sel = (in_array($key, $selected, true)) ? ' selected="selected"' : ''; /// HERE THE ,true ADDED
$form .= '<option value="'.$key.'"'.$sel.'>'.(string) $val."</option>\n";
}
}
$form .= '</select>';
return $form;
}
}
沒有使用過codeigniter,這是一個隨機猜測(所以沒有回答)。但PHP處理以0開頭的數字作爲二進制數字。這意味着01等於1.我想這同樣適用於0001,因爲它也是1的二進制。 – 2011-02-16 17:16:46