Как сделать календарь с рабочими и выходными днями при графике 4/2 на php?

Чтобы создать календарь с рабочими и выходными днями при графике 4/2 в PHP, вам понадобится некоторый код для определения, какие дни являются выходными, а какие дни являются рабочими.

Первым шагом будет определить, какой день недели является начальным днем вашего календаря. Для этого можно использовать функцию date('N', strtotime($start_date)), где $start_date - это стартовая дата вашего календаря. Функция date('N') возвращает номер дня недели (от 1 до 7), где 1 - понедельник, 2 - вторник и т.д.

Затем вы можете создать цикл, чтобы пройти по всем дням в вашем календаре и определить, является ли конкретный день рабочим или выходным. Для этого можно использовать функцию date('N', strtotime($date)), где $date - это текущая дата, которую вы проверяете. Если число, возвращаемое функцией date('N') делится на 6 без остатка, то это суббота или воскресенье, и они будут выходными днями. В противном случае, это будний день и будет рабочим днем.

Вот пример кода, который поможет вам создать календарь с рабочими и выходными днями при графике 4/2 в PHP:

function isWeekend($date) {
    return (date('N', strtotime($date)) % 6 === 0);
}

function generateCalendar($start_date, $num_days) {
    $calendar = [];

    for ($i = 0; $i < $num_days; $i++) {
        $date = date('Y-m-d', strtotime($start_date . ' + ' . $i . ' days'));
        $is_weekend = isWeekend($date);

        if ($i % 6 < 4) {
            $calendar[$date] = $is_weekend ? 'Выходной' : 'Рабочий';
        } else {
            $calendar[$date] = 'Выходной';
        }
    }

    return $calendar;
}

$start_date = '2022-01-01';
$num_days = 365;

$calendar = generateCalendar($start_date, $num_days);

// Выводим календарь
foreach ($calendar as $date => $status) {
    echo $date . ' - ' . $status . '<br>';
}

В этом примере кода функция generateCalendar() принимает стартовую дату и количество дней, которое вы хотите добавить к календарю. Она возвращает ассоциативный массив, где ключами являются даты, а значениями - статусы (работа или выходной).

В цикле мы проверяем, является ли текущая дата рабочим или выходным днем, и указываем соответствующий статус в массиве $calendar. Если текущий день является пятницей или любым рабочим днем внутри интервала 4 рабочих дня / 2 выходных дня, то мы помечаем его как рабочий день. В противном случае, мы помечаем его как выходной день.

После генерации календаря мы можем использовать цикл foreach для вывода дат и их статусов.

Надеюсь, это поможет вам создать календарь с рабочими и выходными днями при графике 4/2 на PHP! Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.