Я пытаюсь создать рекурсивную функцию, которая рассчитывает дату доставки подарка в соответствии с некоторыми предопределенными правилами. 1. Подарок может быть доставлен после одного дня бронирования 2. Если вы забронировали в субботу или воскресенье, то подарок будет отправлен после следующего рабочего дня + 1 день обработки. 3. Конечная дата не может быть в предопределенных отпусках.Рекурсивная функция, не возвращающая ожидаемый результат PHP
Я создал следующую функцию, но вернул мне неправильную дату.
//The delivery date might not be from these dates
$holidays_selected = array('23-10-2015','24-10-2015','28-10-2015');
echo $gift_delivery_date = getGiftDeliveryDate(date('d-m-Y',strtotime('+1 Day')),$holidays_selected);
//It prints 25-10-2015 what i expect is 27-10-2015
function getGiftDeliveryDate($asuumed_date,$holidays){
$tomorrow = '';
if (in_array($asuumed_date,$holidays)) {
$tomorrow = date('d-m-Y',strtotime($asuumed_date.'+1 Day'));
getGiftDeliveryDate($tomorrow,$holidays);
} else if (date('N',strtotime($asuumed_date)) == 6) {
$tomorrow = date('d-m-Y',strtotime($asuumed_date.'+3 Day'));
if(in_array($tomorrow,$holidays)){
$tomorrow = date('d-m-Y',strtotime($tomorrow.'+1 Day'));
getGiftDeliveryDate($tomorrow,$holidays);
}
} else if (date('N',strtotime($asuumed_date)) == 7) {
$tomorrow = date('d-m-Y',strtotime($asuumed_date.'+2 Day'));
if(in_array($tomorrow,$holidays)){
$tomorrow = date('d-m-Y',strtotime($tomorrow.'+1 Day'));
getGiftDeliveryDate($tomorrow,$holidays);
}
} else {
$tomorrow = $asuumed_date;
}
return $tomorrow;
}
Редактировать
Что я ожидал, как выход является 27-10-2015
, но он дает 25-10-2015
в качестве конечной продукции
что является вопрос? – FeedTheWeb
Также добавьте ожидаемый и текущий вывод даты. – Daenarys
Вопрос - это функция, которая не ведет себя так, как я ожидаю, поэтому вам нужна помощь, чтобы выяснить, что происходит в функции. –