Я тихий новый …. и я все еще много путаюсь с кодом.
Я сделал массив:
$months = array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
И тогда у меня есть оператор switch, который возвращает количество дней для каждого месяца:
function month_length($month) {
$leap_year = date("L");
switch ($month) {
case "January": return $max = 31;
case "February":
if ($leap_year === 1) {
return $max = 29;
} else {
return $max = 28;
}
case "March": return $max = 31;
case "April": return $max = 30;
case "May": return $max = 31;
case "June": return $max = 30;
case "July": return $max = 31;
case "August": return $max = 31;
case "September": return $max = 30;
case "October": return $max = 31;
case "November": return $max = 30;
case "December": return $max = 31;
default: return $max = "wrong number";
}
}
Есть ли способ, которым я могу сравнить, если какой-либо объект массива совпадает с любым случаем?
Позвольте мне уточнить; поэтому на данный момент мне нужно установить $ current_month, чтобы php знал, какой случай я хочу отобразить, и я хочу иметь возможность отображать все месяцы для каждого года.
Кто-нибудь знает, что я пытаюсь сказать? Итак, я думаю, мне нужно сравнить строку из массива month с регистром оператора switch, но … как? Поскольку я не хочу сравнивать по одному: S
Спасибо!!!!
Простое решение с foreach
:
foreach($months as $month) {
echo "The month with name $month has ".month_length($month)." days.<br>";
}
Этот код распечатает настольный календарь. Он будет отображать 7 дней в строке для 5 столбцов. дни с 30/31 по 35 заполняются следующими или предыдущими днями месяца, чтобы сохранить недельный аспект.
Надеюсь, поможет.
function renderMonth($displayM, $displayY){
$daysOfWeek = array (
'Mon',
'Tue',
'Wen',
'Thu',
'Fri',
'Sat',
'Sun'
);
$dateUtil = new DateTime ( $displayY . "/" . $displayM . "/01" );
$year = $dateUtil->format ( "Y" );
$week = $dateUtil->format ( "W" );
$week_start = new DateTime ();
$week_start->setISODate ( $year, $week );
$nextDay = clone $week_start;
$i = 1;
$weekdays = 7; // how many days do we display per row
$currday = 1; // current week day
$daysno = 35; // number of display dates
$calendar = '<table class="event-calendar">';
$calendar .= "<thead>";
$calendar .= "<tr>";
foreach ( $daysOfWeek as $day ) {
$calendar .= "<th>$day</th>";
}
$calendar .= "</tr>";
$calendar .= "</thead>";
$calendar .= "<tbody>";
while ( $i < $daysno ) {
if ($i == 1) {
$calendar .= '<tr>';
$calendar .= '<td>' . $nextDay->format ( 'd M' ) . '</td>';
}
$currday ++;
if ($currday > $weekdays) {
$calendar .= '</tr>';
$calendar .= '<tr>';
$currday = 1;
}
$nextDay->add ( new DateInterval ( 'P1D' ) );
$calendar .= '<td>' . $nextDay->format ( 'd M' ) . '</td>';
$i ++;
if ($i == $daysno) {
$calendar .= '</tr>';
}
}
$calendar .= "</tbody>";
$calendar .= "</table>";
return $calendar;
}
echo renderMonth("10", "2015");
echo renderMonth("11", "2015");
echo renderMonth("12", "2015");