【问题标题】:monthname for loop inside if-else statementif-else 语句中 for 循环的月份名称
【发布时间】:2017-07-03 11:00:04
【问题描述】:

我有这段代码可以打印月份名称到当前月份(如果年份是当前年份)并打印到 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;
    }   

}

【问题讨论】:

标签: php date


【解决方案1】:

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

$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;
}

【讨论】:

    【解决方案2】:

    您只需要预先决定您将在哪里结束您的列表...

    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;
    

    【讨论】:

      【解决方案3】:

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

      $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;
      }
      

      【讨论】:

        【解决方案4】:

        您只能使用一个循环,并且您需要在当前年份仅使用一个 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;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-28
          相关资源
          最近更新 更多