我试图获取每个月的月份和日期列表f.e。
January
01 02 03 04 05 (...)
February
01 02 03 04 05 (...)
我喜欢每个月用div包裹,这将有一个CSS课程。
我怎么能做到这一点?我已尝试使用下面的代码,但它会返回天数列表,而不会将它们分成不同的月份:/
$start_date = '2015-01-01';
$start_day = date('z', strtotime($start_date));
$days_in_a_year = date('z', strtotime('2015-12-31'));
$number_of_days = ($days_in_a_year - $start_day) +1 ;
for ($i = 0; $i < $number_of_days; $i++) {
$date = strtotime(date("Y-m-d", strtotime($start_date)) . " +$i day");
echo date('d-m-y F - l', $date) .'<br />';
}
答案 0 :(得分:1)
您可以使用cal_days_in_month()
功能:
$year = 2015;
for($month=1; $month<=12; $month++){
// Show month name
$monthName = date('F', strtotime($year.'-'.$month.'-01'));
echo "<div>$monthName: ";
// Calculate days in given month
$days = cal_days_in_month(CAL_GREGORIAN, $month, $year);
// Print days
for($i = 1; $i <= $days; $i++)
{ echo "$i "; }
// Close div
echo '</div>';
}
编辑:没有额外阵列的解决方案。
答案 1 :(得分:0)
可能你应该首先迭代几个月,然后在内循环中迭代几天。像这样:
$year = '2015';
for($month = 1; $month <= 12; $month++) {
$month_name = date('F', strtotime($year . '-' . $month . '-01'));
echo '<div class="month-wrap">';
echo $month_name;
$days_in_month = date('t', strtotime($year . '-' . $month . '-01'));
for($day = 1; $day <= $days_in_month; $day++)
{
echo '<div class="day-wrap">' . $day . '</div>';
}
echo '</div>';
}