#php #arrays
#php #массивы
Вопрос:
У меня есть этот код:
<?php
$schedules = array();
$schedules[0]['start_hour'] = "08:00:00";
$schedules[1]['start_hour'] = "08:15:00";
$schedules[2]['start_hour'] = "08:30:00";
$schedules = json_encode($schedules);
$schedules = json_decode($schedules, FALSE);
for ($i = strtotime("08:00:00"); $i <= strtotime("09:00:00"); $i = $i 15*60):
foreach($schedules as $sch):
if($i == strtotime($sch->start_hour)):
echo date("H:i", $i)." SCHEDULED! <br>";
else:
echo date("H:i", $i)." NOT SCHEDULED :( <br />";
endif;
endforeach;
endfor;
?>
У меня это первый for, который отправляется с 08:00:00 до 09:00:00 каждые 15 минут, и у меня есть второй foreach, который проверяет внутри этого массива, какие часы я запланировал. у меня есть это, если кто проверяет, какие часы в первом для находятся в массиве расписаний, и распечатывает его, а если нет в массиве, печатает как НЕ ЗАПЛАНИРОВАННЫЕ.
Проблема в том, что когда у меня есть 2 или более расписаний в массиве, выходные данные дублируют значения. В этом примере вывод:
08:00 SCHEDULED!
08:00 NOT SCHEDULED :(
08:00 NOT SCHEDULED :(
08:15 NOT SCHEDULED :(
08:15 SCHEDULED!
08:15 NOT SCHEDULED :(
08:30 NOT SCHEDULED :(
08:30 NOT SCHEDULED :(
08:30 SCHEDULED!
08:45 NOT SCHEDULED :(
08:45 NOT SCHEDULED :(
08:45 NOT SCHEDULED :(
09:00 NOT SCHEDULED :(
09:00 NOT SCHEDULED :(
09:00 NOT SCHEDULED :(
и я хочу что-то вроде:
08:00 SCHEDULED!
08:15 SCHEDULED!
08:30 SCHEDULED!
08:45 NOT SCHEDULED :(
09:00 NOT SCHEDULED :(
Что я могу сделать?
Комментарии:
1. помещайте значение в массив по РАСПИСАНИЮ и всегда проверяйте, существует ли запланированный ключ / значение
Ответ №1:
Начните с упрощения процесса, создайте простой массив забронированных времен, чтобы вы могли использовать in_array()
его внутри одного цикла
$schedules = array();
$schedules[0]['start_hour'] = "08:00:00";
$schedules[1]['start_hour'] = "08:15:00";
$schedules[2]['start_hour'] = "08:30:00";
#Make simple array of booked times
$booked = [];
foreach ( $schedules as $sch ):
$booked[] = strtotime($sch['start_hour']);
endforeach;
for ($i = strtotime("08:00:00"); $i <= strtotime("09:00:00"); $i = $i 15*60):
if( in_array($i, $booked)):
echo date("H:i", $i)." SCHEDULED! n";
else:
echo date("H:i", $i)." NOT SCHEDULED :( n";
endif;
endfor;
Результат
08:00 SCHEDULED!
08:15 SCHEDULED!
08:30 SCHEDULED!
08:45 NOT SCHEDULED :(
09:00 NOT SCHEDULED :(
Комментарии:
1. что, если у меня есть идентификатор события в массиве, например: $schedules[0][‘event_id’] = 230, как я могу получить идентификатор каждого события в ЗАПЛАНИРОВАННЫХ результатах, пример: ссылка