递归函数中的增量变量问题

时间:2013-02-06 10:34:25

标签: php recursion increment

我的递归函数是

function recursion($vals,$i) //
{
$htm=implode('',file($vals));
echo $i;
if($htm)
{
return $htm;
}
else
{
    echo "\n.................link broken...................\n";
    sleep(10);
    echo "\n.................retrying......................\n";     
    **// return recursion($vals,$i+1);  //case 1
            // return recursion($vals,$i++);    //case 2**
}
}

使用案例1增加 $ i + 1 的值,而使用 $ i ++ 不增加$ i值为什么?

1 个答案:

答案 0 :(得分:1)

因为后增量($a++)运算符意味着

  

返回$a,然后将$a加1。

查看official document

<强>增加:

(如@Matt所述)预增量运算符(++$a)表示递增然后返回。

所以在你的情况下,你使用了

recursion($i++);

这导致$i将其当前值返回到函数调用的参数,然后将其自身递增1,因此recursion()将始终获得相同的$i因为它在之后递增,它被用作参数。

更改为

recursion(++$i);

会有所帮助。