0

我在本月的最后一天一直遇到问题,除了这段代码可以很好地显示从当月开始的所有 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>
4

2 回答 2

1

您可能会遇到一个问题,即从 X 个月后的今天开始跳过一个多月。代替

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

尝试使用

    strtotime(sprintf('first day of +%d month', $i));
于 2013-08-01T17:12:00.470 回答
0
<?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'); ?>thenmarch将默认被选中。

于 2016-01-09T14:11:06.277 回答