3v4l.org

run code in 500+ PHP versions simultaneously
<?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)

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.5.60.0050.00317.07
8.5.50.0080.00916.88
8.5.30.0100.00720.22
8.5.20.0130.00420.07
8.5.10.0100.00818.81
8.5.00.0110.01120.30
8.4.210.0150.00719.76
8.4.180.0130.01019.83
8.4.170.0100.01122.03
8.4.160.0100.01123.97
8.4.150.0080.00516.92
8.4.140.0090.01417.83
8.4.130.0090.01118.11
8.4.120.0120.00820.71
8.4.110.0100.00922.50
8.4.100.0120.00818.02
8.4.90.0080.00717.90
8.4.80.0060.00417.99
8.4.70.0060.00717.96
8.4.60.0080.01318.71
8.4.50.0090.01124.05
8.4.40.0100.01017.60
8.4.30.0040.01520.63
8.4.20.0130.00619.70
8.4.10.0080.00017.76
8.3.300.0120.01020.67
8.3.290.0110.01020.88
8.3.280.0130.00920.16
8.3.270.0150.01016.65
8.3.260.0130.00616.63
8.3.250.0110.01018.94
8.3.240.0140.00716.70
8.3.230.0090.01016.66
8.3.220.0140.00518.91
8.3.210.0110.00816.74
8.3.200.0040.00516.75
8.3.190.0050.01017.43
8.3.180.0100.00918.76
8.3.170.0120.00616.54
8.3.160.0120.00618.73
8.3.150.0070.01116.61
8.3.140.0040.00416.76
8.3.130.0040.01116.82
8.3.120.0090.00019.07
8.3.110.0050.00320.94
8.3.100.0030.01724.06
8.3.90.0070.01126.77
8.3.80.0100.00016.63
8.3.70.0090.00616.75
8.3.60.0070.01016.75
8.3.50.0110.00618.28
8.3.40.0110.00420.27
8.3.30.0180.00319.08
8.3.20.0080.00024.18
8.3.10.0050.00324.66
8.3.00.0000.00826.16
8.2.300.0110.00918.80
8.2.290.0080.01220.54
8.2.280.0120.00418.59
8.2.270.0110.00718.42
8.2.260.0030.00517.04
8.2.250.0110.00718.33
8.2.240.0070.00719.17
8.2.230.0060.00322.58
8.2.220.0000.00937.54
8.2.210.0080.00026.77
8.2.200.0060.00316.63
8.2.190.0140.00316.88
8.2.180.0070.01125.92
8.2.170.0150.00022.96
8.2.160.0120.00922.96
8.2.150.0000.00925.66
8.2.140.0050.00324.66
8.2.130.0080.00026.16
8.2.120.0050.00320.75
8.2.110.0030.00620.51
8.2.100.0100.00019.27
8.1.340.0120.00817.85
8.1.330.0100.00918.39
8.1.320.0090.00116.35
8.1.310.0110.00716.97
8.1.300.0060.00916.49
8.1.290.0090.00318.88
8.1.280.0110.00425.92
8.1.270.0000.00723.99
8.1.260.0120.00326.35
8.1.250.0040.00428.09
8.1.240.0100.00019.01
8.1.230.0050.00518.57
8.1.30.0040.00617.88

preferences:
53.13 ms | 859 KiB | 5 Q