In what situations would it be advisable to use a recursive function or loop in PHP to adjust a calculated date based on weekends and holidays, rather than relying solely on built-in functions like strtotime?

When adjusting a calculated date based on weekends and holidays in PHP, it may be advisable to use a recursive function or loop to handle the specific logic required for skipping over non-working days. This approach allows for more customization and control over the date adjustment process, especially when dealing with complex holiday schedules or specific business rules that cannot be easily handled by built-in functions like strtotime.

function adjustDate($date, $daysToAdd) {
    $newDate = date('Y-m-d', strtotime($date . ' +' . $daysToAdd . ' weekdays'));
    
    // Check if the adjusted date falls on a weekend
    $dayOfWeek = date('N', strtotime($newDate));
    if ($dayOfWeek >= 6) {
        return adjustDate($newDate, 1);
    }
    
    // Check if the adjusted date falls on a holiday (add your holiday logic here)
    // if (isHoliday($newDate)) {
    //     return adjustDate($newDate, 1);
    // }
    
    return $newDate;
}

// Example usage
$startDate = '2022-12-23';
$adjustedDate = adjustDate($startDate, 5);
echo $adjustedDate; // Output: 2022-12-30