How can PHP be used to determine the overlap between date ranges and calculate the number of days in each overlapping period?

To determine the overlap between date ranges and calculate the number of days in each overlapping period, you can compare the start and end dates of each range to find the overlapping period. Then, calculate the number of days in the overlapping period by finding the difference between the end date of the overlapping period and the start date. This can be achieved by using PHP's date functions to manipulate dates and compare them.

function calculateOverlap($start1, $end1, $start2, $end2) {
    $overlapStart = max($start1, $start2);
    $overlapEnd = min($end1, $end2);
    
    if ($overlapStart > $overlapEnd) {
        return 0; // No overlap
    }
    
    $overlapDays = (strtotime($overlapEnd) - strtotime($overlapStart)) / (60 * 60 * 24);
    
    return $overlapDays;
}

// Example of how to use the function
$start1 = '2022-01-01';
$end1 = '2022-01-10';
$start2 = '2022-01-05';
$end2 = '2022-01-15';

$overlapDays = calculateOverlap($start1, $end1, $start2, $end2);
echo "Number of overlapping days: " . $overlapDays;