PHP递归函数有什么问题?

时间:2014-10-15 18:34:26

标签: 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

但今天的$ echo(代码的最后一行)是

Today: 2014-10-19

那么,出了什么问题?功能中的最后一个$ date是“2014-10-20”,这个值现在返回到$,但是今天的$显示了不同的值。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

正如kojiro在评论中指出的那样,你不会将内部调用的返回值赋给todayDate()。要更改此项,请替换此行

todayDate($date);

$date = todayDate($date);