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、1ずつインクリメント$aします。

公式文書をチェックしてください。

添加:

そして(@Mattが述べているように)pre-increment演算子(++$a)はインクリメントしてから戻ることを意味します。

だからあなたの場合、あなたは

recursion($i++);

その結果、$i現在の値が関数呼び出しのパラメーターに返され、それ自体が1ずつインクリメントされます。したがって、パラメーターとして使用されたにインクリメントされるためrecursion()、常に同じ値になります。$i

への変更

recursion(++$i);

役立つだろう。

于 2013-02-06T10:36:51.893 に答える