3v4l.org

run code in 300+ PHP versions simultaneously
<?php function splitAndMergeDateRanges(array $dateRanges): array { if (empty($dateRanges)) { return []; } // First, sort the date ranges by their start date usort($dateRanges, function($a, $b) { return strcmp($a['start'], $b['start']); }); $mergedRanges = []; $currentRange = $dateRanges[0]; foreach ($dateRanges as $range) { if ($range['start'] <= $currentRange['end']) { // If the current range overlaps with the new range, merge them $currentRange['end'] = max($currentRange['end'], $range['end']); } else { // If they don't overlap, add the current range to the merged list $mergedRanges[] = $currentRange; // and start a new range $currentRange = $range; } } // Don't forget to add the last range $mergedRanges[] = $currentRange; return $mergedRanges; } // Example input $dateRanges = [ ["start" => "2024/06/11", "end" => "2024/06/12"], ["start" => "2024/06/12", "end" => "2024/06/13"], ["start" => "2024/06/13", "end" => "2024/06/14"], ["start" => "2024/06/14", "end" => "2024/06/15"], ["start" => "2024/06/15", "end" => "2024/06/16"], ["start" => "2024/06/16", "end" => "2024/06/17"], ["start" => "2024/06/17", "end" => "2024/06/18"], ["start" => "2024/06/18", "end" => "2024/06/19"], ["start" => "2024/06/19", "end" => "2024/06/20"], ["start" => "2024/06/20", "end" => "2024/06/21"], ["start" => "2024/06/22", "end" => "2024/06/23"], ["start" => "2024/06/23", "end" => "2024/06/24"], ["start" => "2024/06/24", "end" => "2024/06/25"], ["start" => "2024/06/25", "end" => "2024/06/26"], ["start" => "2024/06/26", "end" => "2024/06/27"], ["start" => "2024/06/27", "end" => "2024/06/28"], ["start" => "2024/06/28", "end" => "2024/06/29"], ["start" => "2024/06/29", "end" => "2024/06/30"] ]; print_r(splitAndMergeDateRanges($dateRanges)); splitAndMergeDateRanges($dateRanges);

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.3.110.0030.00620.94
8.3.100.0090.00916.54
8.3.90.0070.01118.56
8.3.80.0280.00830.84
8.3.70.0360.00930.84
8.3.60.0070.00730.84
8.3.50.0140.00030.84
8.3.40.0250.00030.84
8.3.30.0170.00730.84
8.3.20.0220.00030.84
8.3.10.0210.00430.84
8.3.00.0240.00330.84
8.2.230.0040.00422.58
8.2.220.0040.00424.06
8.2.210.0040.00426.77
8.2.200.0170.00730.84
8.2.190.0200.00330.84
8.2.180.0110.01130.84
8.2.170.0100.01330.84
8.2.160.0180.00830.84
8.2.150.0230.00030.84
8.2.140.0200.00530.84
8.2.130.0160.00630.84
8.2.120.0160.00630.84
8.2.110.0200.00330.84
8.2.100.0200.00730.84
8.2.90.0240.00430.84
8.2.80.0270.00030.84
8.2.70.0280.00030.84
8.2.60.0260.00030.84
8.2.50.0260.00330.84
8.2.40.0260.00030.84
8.2.30.0140.00730.84
8.2.20.0150.00930.84
8.2.10.0190.00630.84
8.2.00.0190.00330.84
8.1.290.0230.00630.84
8.1.280.0190.00930.84
8.1.270.0250.00330.84
8.1.260.0170.00630.84
8.1.250.0220.00830.84
8.1.240.0180.00530.84
8.1.230.0120.01230.84
8.1.220.0110.01130.84
8.1.210.0220.00030.84
8.1.200.0230.00630.84
8.1.190.0180.00430.84
8.1.180.0140.00930.84
8.1.170.0170.00330.84
8.1.160.0180.00330.84
8.1.150.0210.00730.84
8.1.140.0230.00830.84
8.1.130.0210.01330.84
8.1.120.0250.01530.84
8.1.110.0340.00730.84
8.1.100.0400.00730.84
8.1.90.0220.00730.84
8.1.80.0200.00630.84
8.1.70.0200.00730.84
8.1.60.0320.01330.84
8.1.50.0360.00830.84
8.1.40.0360.00830.84
8.1.30.0400.00330.84
8.1.20.0440.01030.84
8.1.10.0530.00730.84
8.1.00.0320.01630.84

preferences:
24.75 ms | 403 KiB | 5 Q