Php 使用当前月份和当前年份预填充下拉框

Php 使用当前月份和当前年份预填充下拉框,php,Php,我需要在PHP中自动填充一个下拉框,它需要以特定的方式格式化 从当前月份和当前年份开始,然后以每月间隔显示21个条目。。像这样 <select name="date" id="date"> <option value="1/4/2019">April 2019</option> (Current Month Current Year) <option value="1/5/2019">May 2019</option> <opt

我需要在PHP中自动填充一个下拉框,它需要以特定的方式格式化

从当前月份和当前年份开始,然后以每月间隔显示21个条目。。像这样

 <select name="date" id="date">
<option value="1/4/2019">April 2019</option> (Current Month Current Year)
<option value="1/5/2019">May 2019</option>
<option value="1/6/2019">June 2019</option>
<option value="1/7/2019">July 2019</option>
<option value="1/8/2019">August 2019</option>
<option value="1/9/2019">September 2019</option>
<option value="1/10/2019">Ocotber 2019</option>
<option value="1/11/2019">November 2019</option>
<option value="1/12/2019">December 2019</option>
<option value="1/1/2020">January 2020</option>
<option value="1/2/2020">February 2020</option>
<option value="1/3/2020">March 2020</option>
<option value="1/4/2020">April 2020</option>
<option value="1/5/2020">May 2020</option>
<option value="1/6/2020">June 2020</option>
<option value="1/7/2020">July 2020</option>
<option value="1/8/2020">August 2020</option>
<option value="1/9/2020">September 2020</option>
<option value="1/10/2020">October 2020</option>
<option value="1/11/2020">November 2020</option>
<option value="1/12/2020">December 2020</option>
5.3+

$d=new\DateTime(“本月的第一天”);
回声“;
对于($i=0;$i<21;$i++){
$target=$d;
回显“$target->format(“fy”);
$d->modify(‘下个月的第一天’);
}
回声“;
支持的版本(PHP4、PHP5、PHP7)

$no_of_迭代=21;
$time=strottime(日期('Y-m-d'));
回声“;

对于($i=1;$i所以你想看一下strotime(),这允许你一次抽出一个月的时间。因为你想从第一个开始,你要从01开始

请看下面的片段……我希望评论能够充分解释

$html = buildDateDropDown();

echo $html;

function buildDateDropDown ( ) {

$FirstThisMonth = "01".date('-m-Y'); //Concatonate 01 tith the month & year of this month


$dropDown = "<select class='form-control' id='date' name='date'>\n";  //open your select tag
$dropDown.="\t<option value='$FirstThisMonth' selected>$FirstThisMonth</option>\n"; //first of this month is selected

$loop=1;

while($loop<=21) {

    $value = "01".date('-m-Y', strtotime('-'.$loop.' month')); //strtotime converts - the loop value of one month
    $dropDown.="\t<option value='$value'>$value</option>\n";    //concatonate in your value
    $loop++; //increment the loop

}

$dropDown.="</select>\n"; //close the select

return $dropDown;
$html=buildDateDropDown();
echo$html;
函数buildDateDropDown(){
$FirstThisMonth=“01”。日期('-m-Y');//约定本月的第1个月和第1年
$dropDown=“\n”//打开选择标记
$dropDown.=“\t$FirstThisMonth\n”;//已选择本月第一个
$loop=1;

虽然($loopCode from approved answer)将在2021年生成两次游行(只是尝试增加迭代次数并检查输出),因此不应该使用它。请检查我的答案。很抱歉,只是一个简单的答案,我目前从列表中缺少2019年4月,它是从2019年5月开始的?而不是本月的4月?我算出了,我改为($i=1;“to”for($i=0);谢谢您根据要求调整$time。在循环中,它将从+1个月开始。
$d = new \DateTime('first day of this month');
echo  "<select name='date' id='date'>";
for ($i = 0; $i < 21; $i++) {
    $target = $d;
    echo "<option value='".$target->format("1/m/Y")."'>".$target->format("F Y")."</option>";
    $d->modify('first day of next month');
}
echo "</select>";
$no_of_iterations = 21;
$time = strtotime(date('Y-m-d'));
echo  "<select name='date' id='date'>";
for($i = 1; $i <= $no_of_iterations; $i++) {
     $date_in = date("Y-m-d", strtotime("+$i month", $time));
    echo "<option value='".date("1/m/Y", strtotime($date_in))."'>".date("F Y", strtotime($date_in))."</option>";
}
echo "</select>";
$html = buildDateDropDown();

echo $html;

function buildDateDropDown ( ) {

$FirstThisMonth = "01".date('-m-Y'); //Concatonate 01 tith the month & year of this month


$dropDown = "<select class='form-control' id='date' name='date'>\n";  //open your select tag
$dropDown.="\t<option value='$FirstThisMonth' selected>$FirstThisMonth</option>\n"; //first of this month is selected

$loop=1;

while($loop<=21) {

    $value = "01".date('-m-Y', strtotime('-'.$loop.' month')); //strtotime converts - the loop value of one month
    $dropDown.="\t<option value='$value'>$value</option>\n";    //concatonate in your value
    $loop++; //increment the loop

}

$dropDown.="</select>\n"; //close the select

return $dropDown;