Вы не написали, в чём эта проверка состоит? Какой критерий?
Попробую понять из кода. Но он выглядит странно, выглядит ошибочным, т.к. бестолковые действия выполняет. Комментирую ваш код.
date_default_timezone_set('Europe/Moscow');
$time = date('H:i');
$max = '';
//массив
$list = schedule();
foreach ($list as $key => $val) {
if($time < $key) {
$max = $key;
break;
// Как только нашёл первый ключ с временем больше настоящего момента,
// то цикл сразу прерывается. Это выглядит странным, т.к. могут быть ключи с ещё большим
// значение времени, и переменная $max вовсе не содержит, как можно было бы подумать,
// максимальное значение времени в массиве.
}
}
foreach ($list as $key => $item) {
if(($time >= $key) && ($time <= $max)) {
// Второе условие бессмысленно, т.к. всегда выполняется (для любого элемента),
// либо не выполняется никогда, если осталось дефолтным $max == ''.
// Поэтому проверка этого условия внутри цикла для каждого элемента выглядит странным.
//return json_encode($list[$key]);
echo json_encode($list[$key]);
break;
return 0;
}
}
return 0;