Я сделал функцию для показа сегодняшней даты или следующей даты рабочего дня, если это выходные. Функция работает отлично, но с возвратом что-то не так.PHP Что не так с рекурсивной функцией?
$today = todayDate('2014-10-18'); // Saturday
function todayDate($date) {
if(date('N', strtotime($date)) >= 6) {
echo 'If - ' . $date . '<br/>';
$date = date('Y-m-d', strtotime('+1 day', strtotime($date)));
todayDate($date);
} else {
echo 'Else - ' . $date . '<br/>';
}
return $date;
}
echo '<br/><br/>Today: ' . $today . '<br/><br/>';
Эта функция повторяет следующее:
If - 2014-10-18
If - 2014-10-19
Else - 2014-10-20
Но эхо $ сегодня (последняя строка в коде) является
Today: 2014-10-19
Итак, что случилось? Последняя функция $ date in - «2014-10-20», и это значение возвращается к $ today, но сегодня $ $ показывает различное значение. Есть идеи?
Функция строго говоря рекурсивным, но вы никогда не присвоить возвращаемое значение внутреннего вызова ни к чему. – kojiro
Этот код ужасно неэффективен. Вы выполняете повторные обратные вызовы из строки -> timestamp-> string при каждом вызове. Почему бы вам просто не пропустить временную метку и почти все эти вызовы strtotime? –