我有这个代码,如果年份是当前年份,将打印月份名称,如果当年是打印,则打印到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;
}
}
答案 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;
}