Упростите свою логику и исключите досрочно :
$now = time(); // change this to test other times
if (in_array(date('N', $now), array(6, 7))) {
// Sat or Sun
} else if ($now < strtotime('8:15', $now)) {
// before start
} else if ($now < strtotime('9:30', $now)) {
// first period
} else if ($now < strtotime('10:30', $now)) {
// second period
} ... {
...
} else if ($now < strtotime('14:30', $now)) { // use real time, not AM/PM ;-P
...
} else {
// after school
}
Если время до старта, оно истекло, в противном случае, если оно до второго периода, это первый периодв противном случае, если это до третьего периода, это второй период и так далее.Это также помогает вам охватить все промежуточные дела, а окончательный else
охватывает все после.