0
私はCarbon PHP DateTimeライブラリの助けを借りて再帰関数を書こうとしています。しかし、関数を実行すると戻り値はNULLになります。その前にエコーしても、正しくエコーされます。PHPの再帰関数はNULLを返します - Carbon 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-> dayOfWeekが1の場合、else文ではなくif文が実行されるため、giventdateに間違った値があります。 if(($ giventdate-> dayOfWeek!= 1)||($ giventdate-> dayOfWeek!= 2)){ \t \t echo( "
INループ:"。$ giventdate); \t \t return $ giventdate; \t \t \t}他{ \t \t check_next_day($ giventdate-> addDay()); \t} – beamkiller
再帰的な方法では、実行可能なすべての実行分岐が最終的に* something *を返す必要があります。 PHPがデフォルトでnull(エラーを説明する)を返さない限り、エラーが発生すると思います。 – Carcigenicate