duanjia8215
2014-10-15 18:34
浏览 30
已采纳

PHP递归函数有什么问题?

i did function for showing today date or next workday date, if is weekend. Function works great, but with return is something wrong.

$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/>';

This function echoes following:

If - 2014-10-18
If - 2014-10-19
Else - 2014-10-20

But echo of $today (last row in code) is

Today: 2014-10-19

So, what is wrong? Last $date in function is "2014-10-20" and this value is returning to $today, but $today shows different value. Any idea?

图片转代码服务由CSDN问答提供 功能建议

我的功能是显示今天的日期或下一个工作日日期,如果是周末。 功能很好,但返回是错误的。

  $ today = todayDate('2014-10-18');  //星期六
 
函数todayDate($ date){
 if(date('N',strtotime($ date))&gt; = 6){
 echo'If  - '。  $ date。  '&lt; br /&gt;'; 
 $ date = date('Ym-d',strtotime('+ 1 day',strtotime($ date))); 
 todayDate($ date); 
} else  {
 echo'Else  - '。  $ date。  '&LT峰; br /&GT;';  
} 
返回$ date; 
} 
 
 echo'&lt; br /&gt;&lt; br /&gt;今天:'。  $今天。  '&lt; br /&gt;&lt; br /&gt;'; 
   
 
 

此函数回显如下:

 如果 -  2014-10-18 
If  -  2014-10-19 
Else  -  2014-10-20 
   
 
 

但今日美元回声(最后一行) 代码)是

 今天:2014-10-19 
   
 
 

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

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dongxu7408 2014-10-15 18:42
    已采纳

    As kojiro pointed out in the comment, you do not assign the return value of the inner call to todayDate(). To change this, replace this line

    todayDate($date);
    

    with

    $date = todayDate($date);
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题