Ну, давайте go! Допустим, у вас есть дата регистрации, дата проверки, цена в будние дни и цена в выходные дни.
$checkInDate = '2020-03-15';
$checkOutDate = '2020-03-28';
$regularPrice = 150;
$weekendPrice = 200;
Fantasti c! Теперь я считаю, что мы могли бы рассчитать разницу в днях между этим периодом.
$date1=date_create($checkInDate);
$date2=date_create($checkOutDate);
$diff=date_diff($date1,$date2);
$numberOfTheDaysInThisPeriod = $diff->format("%a") + 1; //We add +1 here to count the checkin date
У нас здесь всего 14 дней
Теперь давайте посчитаем, сколько рабочих дней у нас в этот период! для этого мы можем использовать эту функцию, которая является полностью функциональной.
https://gist.github.com/andygock/4be9570ee7f56d7a80f6ac01d59cebc4
Эта функция возвращала мне всего 10 дней в неделю в течение этого периода, поэтому мы иметь
$totalWeekdays = 10;
Отлично, теперь давайте посчитаем, сколько дней у нас в выходные. Просто вычислите разницу между общим количеством дней и общим количеством дней недели.
$totalWeekendDays = $numberOfTheDaysInThisPeriod - $totalWeekdays
Мы получаем в общей сложности 4 дня в выходные дни: 15/03 - 21/03 - 22 / 03 - 28/03
Теперь до фини sh мы рассчитываем общую цену на основе дней и цен.
$totalPrice = (($regularPrice * $totalWeekdays) + ($weekendPrice * $totalWeekendDays));
Ну, я не проверял код, но Я верю, что так я бы подошел к проблеме :) Надеюсь, это поможет.