在if-else语句中循环的monthname

时间:2017-07-03 11:00:04

标签: php date

我有这个代码,如果年份是当前年份,将打印月份名称,如果当年是打印,则打印到december,如果不是当前年份。

代码正常运行,但我想问一下:

  • 是否有最短的代码可以获得相同的结果?
$current_year = date("Y");
$current_month  = date('n'); 
$year=2015;


if ($year==$current_year )
{
for($m=1; $m<=$current_month; ++$m){
    $monthName=date('F', mktime(0, 0, 0, $m, 1)).'<br />';
//print up to current month 
echo $monthName;
    }
}   
else
{

for($m=1; $m<=12; ++$m){
    $monthName=date('F', mktime(0, 0, 0, $m, 1)).'<br />';
//print up to December
echo $monthName;
    }   

}

4 个答案:

答案 0 :(得分:2)

您不需要两个for循环。您只需要检查一个条件并相应地设置当月的值。

$current_year = date("Y");
$current_month = date('n'); 
$year=2015;

if($year!=$current_year)
  $current_month = 12;

for($m=1; $m<=$current_month; ++$m){
  $monthName=date('F', mktime(0, 0, 0, $m, 1)).'<br />';
  //print up to current month 
  echo $monthName;
}

答案 1 :(得分:1)

您只需要预先确定结束列表的位置......

if ($year==$current_year ) {
   $endMonth=$current_month;
}
else {
   $endMonth=12;
}

for($m=1; $m<=$endMonth; ++$m){
    $monthName=date('F', mktime(0, 0, 0, $m, 1)).'<br />';
    echo $monthName;
    }   

你可以将第一位缩写为......

   $endMonth=($year==$current_year)?$current_month:12;

答案 2 :(得分:1)

您只能使用一个循环,并且您只需使用当前年份的一个if条件来中断循环。

$current_year = date("Y");
$current_month  = date('n');
$year=2017;

for ($m=1; $m<=12; ++$m) {
    if ($year==$current_year && $m>$current_month) {
        break;
    }
    $monthName=date('F', mktime(0, 0, 0, $m, 1)).'<br />';
    echo $monthName;
}

答案 3 :(得分:1)

而不是用于循环2次,你可以使用max变量并将其放入for循环... 我的意思是说......

$current_year = date("Y");
$current_month  = date('n'); 
$year=2015;
if ($year==$current_year )$max= $current_month;
else $max = 12;
for($m=1; $m<=$max; ++$m){
    $monthName=date('F', mktime(0, 0, 0, $m, 1)).'<br />';
    echo $monthName;
}