Are there any specific PHP functions or libraries that can assist in calculating workdays efficiently?

Calculating workdays efficiently involves excluding weekends (Saturdays and Sundays) and possibly holidays from a given date range. One way to solve this is by creating a function that iterates through each day in the range, checking if it's a workday or not. To efficiently calculate workdays in PHP, you can use the `DateTime` class along with a custom function to exclude weekends and holidays.

function calculateWorkdays($start_date, $end_date, $holidays = []) {
    $start = new DateTime($start_date);
    $end = new DateTime($end_date);
    $interval = new DateInterval('P1D');
    $period = new DatePeriod($start, $interval, $end);

    $workdays = 0;
    foreach ($period as $day) {
        if ($day->format('N') < 6 && !in_array($day->format('Y-m-d'), $holidays)) {
            $workdays++;
        }
    }

    return $workdays;
}

// Example of how to use the function
$start_date = '2023-01-01';
$end_date = '2023-01-31';
$holidays = ['2023-01-01', '2023-01-15']; // Example holidays
echo calculateWorkdays($start_date, $end_date, $holidays); // Output: 21