0

需要对此进行填充: str_pad($Month, 2, "0", STR_PAD_LEFT) 但是如何/在哪里???

/*******creates the month selection dropdown array****/

 function createMonths($id='month_select', $selected=null)
    {
        /*** array of months ***/
        $months = array(
                1=>'Jan',
                2=>'Feb',
                3=>'Mar',
                4=>'Apr',
                5=>'May',
                6=>'Jun',
                7=>'Jul',
                8=>'Aug',
                9=>'Sep',
                10=>'Oct',
                11=>'Nov',
                12=>'Dec');

        /*** current month ***/
        $selected = is_null($selected) ? date('m') : $selected;

        $select = '<select name="'.$id.'" id="'.$id.'">'."\n";
        foreach($months as $key=>$mon)
        {
            $select .= "<option value=\"$key\"";
            $select .= ($key==$selected) ? ' selected="selected"' : '';
            $select .= ">$mon</option>\n";


        }
        $select .= '</select>';
        return $select;
    }

/********displays the month selection with current month selected/*******</br>
 echo createMonths('Month', date ('m')); 

/******DISPLAYS MONTH AS (4) INSTEAD OF REQUIRED (O4) --- @:( /*****</br>
echo $_POST['Month'];
4

3 回答 3

1

好吧,假设它是您想要填充的值,它就在这里:

$select .= "<option value=\"$key\"";

变成

$select .= '<option value="'.str_pad($key, 2, "0", STR_PAD_LEFT).'"';

这假设您在对 进行检查时不希望它被填充$selected,如果这样做,则需要在循环开始时进行,覆盖 中的值$key,然后您可以使用原始代码,例如所以:

foreach($months as $key=>$mon)
{
    $key = str_pad($key, 2, "0", STR_PAD_LEFT);
    $select .= "<option value=\"$key\"";
    $select .= ($key==$selected) ? ' selected="selected"' : '';
    $select .= ">$mon</option>\n";
}
于 2009-04-20T17:19:43.073 回答
1

您可以使用printf()sprintf()与格式字符串一起使用:

$m = sprintf('%02d', (int) $_POST['Month']);
于 2009-04-20T17:20:26.207 回答
0

当你说:

$select .= ">$mon</option>\n";

您应该使用 str_pad 函数,如下所示:

$select .= ">" . str_pad($mon, 2, "0", STR_PAD_LEFT) . "</option>\n";
于 2009-04-20T17:22:28.323 回答