使用 php 函数创建几个月的下拉列表。

Create a dropdown for months using a php function.

我正在使用此功能创建几个月的下拉菜单。

function formMonth(){
  $month = strtotime(date('Y').'-'.date('m').'-'.date('j').' - 12 months');
  $end = strtotime(date('Y').'-'.date('m').'-'.date('j').' + 0 months');
  while($month < $end){
      $selected = (date('F', $month)==date('F'))? ' selected' :'';
      echo '<option'.$selected.' value="'.date('F', $month).'">'.date('F', $month).'</option>'."\n";
      $month = strtotime("+1 month", $month);
  }
}

我的问题是我需要使用 1 到 12 的数值作为选项值。

此时它使用月份名称作为 value 选项,就像这样。

<select size="1" name="month">
<option selected value="January">January</option>
<option value="February">February</option>
<option value="March">March</option>
<option value="April">April</option>
<option value="May">May</option>
<option value="June">June</option>
<option value="July">July</option>
<option value="August">August</option>
<option value="September">September</option>
<option value="October">October</option>
<option value="November">November</option>
<option value="December">December</option>
</select>

谁能告诉我如何修改这个功能。 谢谢你。

<select size="1" name="month">
<option selected value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>

如果这就是你想要的。

尽情享受吧!

这是你的答案:-

<?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

试试这个:你的问题解决了。

<?php
function formMonth(){
  $month = strtotime(date('Y').'-'.date('m').'-'.date('j').' - 12 months');
  $end = strtotime(date('Y').'-'.date('m').'-'.date('j').' + 0 months');
  $val=1;
  echo "<select>";
  while($month < $end){

      $selected = (date('F', $month)==date('F'))? ' selected' :'';
      echo '<option'.$selected.' value='.$val.'>'.date('F', $month).'</option>'."\n";
      $month = strtotime("+1 month", $month);
       $val++;
  }
   echo "</select>";
}

formMonth();

?>

试试下面的代码:

<select name="month" size='1'>
    <?php
    for ($i = 0; $i < 12; $i++) {
        $time = strtotime(sprintf('%d months', $i));   
        $label = date('F', $time);   
        $value = date('n', $time);
        echo "<option value='$value'>$label</option>";
    }
    ?>
</select>

如果您查看 date() 的文档,您会在 "Format" 下看到您可以使用 n 来表示月份,从 1 到 12。 (您也可以使用 m 来获得前导零 (01-12))。

这意味着你基本上只需要改变

echo '<option'.$selected.' value="'.date('F', $month).'">'.date('F', $month).'</option>'."\n";

echo '<option'.$selected.' value="'.date('n', $month).'">'.date('F', $month).'</option>'."\n";

在您当前的代码中,前提是它按预期工作(我所做的只是将 values 属性中的 date('F', $month) 替换为 date('n', $month)

<div class="form-group">
          <label>Month:</label>
          <select id="month" name="month" class="form-control select2" style="width: 100%;">
            <option value=""></option>
            <?php
            $monthArray = range(1, 12);
            foreach ($monthArray as $month) {
              $monthPadding = str_pad($month, 2, "0", STR_PAD_LEFT);
              $fdate = date("F", strtotime("2015-$monthPadding-01"));
                echo '<option value="'.$monthPadding.'">'.$fdate.'</option>';
            }?>
          </select>
        </div>

更多详情点击here

<select name="month">
<?php
foreach (['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] as $monthNumber => $month) {
    echo "<option value='$monthNumber'>{$month}</option>";
}
?>
</select>

我在这里尝试了一些答案,但他们没有给我正确的解决方案来显示月份数组。 例如,@Kausha Mehta 解决方案输出了这个。

<select name="month" size="1">
<option value="7">July</option>
<option value="8">August</option>
<option value="10">October</option>
<option value="10">October</option>
<option value="12">December</option>
<option value="12">December</option>
<option value="1">January</option>
<option value="3">March</option>
<option value="3">March</option>
<option value="5">May</option>
<option value="5">May</option>
<option value="7">July</option>
</select>

这似乎跳过了一些月份并重复了一些月份。

但是这按预期工作。

        <select id="month" name="month" autocomplete='off'>
            <?php
    // Create a dropdown for months using a php foreach.
$monthArray  = range(1, 12);
//::::
   foreach ($monthArray as  $month):
   
       $monthCode = str_pad($month, 2, "0", STR_PAD_LEFT);

       $selected = ($monthCode === date('m')) ? 'selected' : '';  
//All months start with 1
        $date = new DateTime(date("Y-").$monthCode."-01");
       print '<option '.$selected.' value="'.$monthCode.'">'.$date->format('F').'</option>';
 endforeach;
            
    
    ?>
        </select>  
for($i=1; $i<=12; $i++)
{
echo '<option value="'.date('m', strtotime('2020-'.$i.'-01')).'">'.date('M', strtotime('2020-'.$i.'-01')).'</option>';  
}