monthname for循环内if-else语句
我有此代码将打印月的名称到当前月份,如果年份是当前年份和打印到december
,如果它不是当前年份。monthname for循环内if-else语句
的代码工作,但我想问:
- 是否有任何最短的代码,以获得相同的结果?
$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;
}
}
您不需要两个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;
}
非常感谢你.. – gtroop
你只需要决定了前面,您将结束列表...
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;
非常感谢。 – gtroop
您只能使用一个循环,并且需要在当前年份仅使用一个条件的情况下断开循环。
$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;
}
非常感谢你... – gtroop
,而不是使用for循环2次,你可以使用一个最大变量,并把在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;
}
的可能的复制[如何列出两个日期之间的所有月份](https://*.com/questions/18742998/how-to-list-all-months-between-two-dates) – caramba