Как str_pad этот PHP массив выбора даты месяц? - PullRequest
0 голосов
/ 20 апреля 2009

Необходимо добавить к этому: str_pad ($ Месяц, 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'];

Ответы [ 3 ]

1 голос
/ 20 апреля 2009

Вы можете использовать printf() или sprintf() со строкой формата:

$m = sprintf('%02d', (int) $_POST['Month']);
1 голос
/ 20 апреля 2009

Ну, если предположить, что это значение, которое вы хотите заполнить, оно здесь:

$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";
}
0 голосов
/ 20 апреля 2009

когда вы говорите:

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

Вы должны использовать функцию str_pad, например:

$select .= ">" . str_pad($mon, 2, "0", STR_PAD_LEFT) . "</option>\n";
...