<?php function dates_in_consecutive_range(string $start_date, string $end_date, array $dates_list): bool { // If either $start_date or $end_date or both is not in $dates_list, return false if (!in_array($start_date, $dates_list) || !in_array($end_date, $dates_list)) { return false; } // If in consecutive range without missing days (holes), return true, else return false $start_dt = new DateTime($start_date); $end_dt = new DateTime($end_date); $interval = DateInterval::createFromDateString('1 day'); $period = new DatePeriod($start_dt, $interval, $end_dt); foreach ($period as $dt) { $curr_date = $dt->format("Y-m-d"); if (!in_array($curr_date, $dates_list)) { return false; } } return true; } $dates_list = [ '2022-03-11', '2022-03-12', '2022-03-13', '2022-03-14', '2022-03-18', '2022-03-19', ]; $start_date = '2022-03-11'; $end_date = '2022-03-14'; var_dump(dates_in_consecutive_range($start_date, $end_date, $dates_list)); // true $start_date = '2022-03-11'; $end_date = '2022-03-18'; var_dump(dates_in_consecutive_range($start_date, $end_date, $dates_list)); // false $start_date = '2022-03-18'; $end_date = '2022-03-19'; var_dump(dates_in_consecutive_range($start_date, $end_date, $dates_list)); // true $start_date = '2022-03-19'; $end_date = '2022-03-20'; var_dump(dates_in_consecutive_range($start_date, $end_date, $dates_list)); // false ($end_date not in $dates_list)
You have javascript disabled. You will not be able to edit any code.