0

我的递归函数是

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 值为什么?

4

1 回答 1

2

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

返回$a,然后加$a一。

查看官方文档

添加:

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

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

recursion($i++);

这导致$i将其当前值返回到函数调用的参数中,然后将自身加一,因此recursion()始终会得到相同的$i结果,因为它在用作参数后会自增。

改成

recursion(++$i);

有助于。

于 2013-02-06T10:36:51.893 回答