PHP下拉选择函数可动态创建月份


PHP dropdown select function to dynamically create months

我在一个月的最后一天一直有问题,除了这个代码可以很好地显示从当前月份开始的所有12个月。在这个月的最后一天,我会收到一些月的副本,而其他月则根本不显示。如有任何帮助,我们将不胜感激。谢谢

<select id="month" name="month">

<?php
//lists months
    for ($i = 0; $i <= 11; ++$i) 
        {
            $time = strtotime(sprintf('+%d months', $i));
            $value = date('m', $time);
            $label = date('F', $time);
//if month is set stay on that month
            if($month==$value)
                { printf('<option value="%s" selected="selected">%s</option>' , $value, $label);
                }
            else
                {printf('<option value="%s">%s</option>', $value, $label);}
        }
?>
//first month shows instead of blank
    $("#target option:first")
</select>

您可能会遇到一个问题,从当天起X个月后跳过一个月。代替

   strtotime(sprintf('+%d months', $i));

尝试使用

    strtotime(sprintf('first day of +%d month', $i));
<?php
    function months($selctedMonth='january'){
        $months='<select name="month" size="1">';
        for ($i = 12; $i > 0; $i--) {
            $time = strtotime(sprintf('-%d months', $i));   
            $label = date('F', $time); 
            $selctedM = strtolower($selctedMonth) == strtolower($label) ? 'selected' : '';
            $months.="<option value='$label'  $selctedM >$label</option>";
        }  
        $months.="</select>";
        return $months;
    }
     echo months(); 

?>

默认情况下,一月将显示为选中。

如果您写入<?php echo months('march'); ?>,则默认情况下会选择march