Im пытается написать рекурсивную функцию с помощью библиотеки DateTime Carbon PHP. Но если я запустил функцию, возвращаемое значение будет NULL, даже если перед этим я его эхо-эхо, и оно будет правильно отражено.Функция рекурсии PHP возвращает NULL - Углеродная библиотека PHP
Рекурсивная функция выполняет поиск следующего доступного буднего дня, поэтому в субботу и воскресенье 6 и 0. Я просто тестирую его для этой функции.
Каждая помощь ценится.
Спасибо.
$today = Carbon::now($timezone);
$variable = check_next_day($today);
var_dump($variable); //NULL
function check_next_day($giventdate){
//var_dump ($giventdate->dayOfWeek);
/*echo "<br>Holnapi nap:" . $giventdate->addDay();
echo "<br>Holnapi nap erteke:" . $giventdate->dayOfWeek; */
//echo gettype($giventdate->dayOfWeek);
if (($giventdate->dayOfWeek == 1) || ($giventdate->dayOfWeek == 2)){
//echo ("<br>IN loop:". $giventdate);
check_next_day($giventdate->addDay());
} else {
//echo "ELSE VAN?". $giventdate; // This returns the correct value 2017-02-08 19:44:46
return $giventdate; // This returns NULL
}
//print_r (check_next_day($giventdate->addDay()));
//echo "WTF";
}
в первой ветви вашей, если-заявление, вы ** ничего не возвращать **. это не очень рекурсивно ... –
Я пробовал это так, но в этом случае также возвращается NULL. И есть неправильное значение в giventdate, потому что если $ giventdate-> dayOfWeek равно 1, он запускает оператор if, а не else. if (($ giventdate-> dayOfWeek! = 1) || ($ giventdate-> dayOfWeek! = 2)) { \t \t echo ("
IN loop:". $ Giventdate); \t \t return $ giventdate; \t \t \t} еще { \t \t check_next_day ($ giventdate-> addDay()); \t} – beamkiller
В рекурсивном методе каждая возможная ветвь выполнения должна в конечном итоге возвращать * something *. Если PHP не по умолчанию и не возвращает null (что объясняет ошибку), я ожидаю, что это вызовет ошибку. – Carcigenicate