2013-02-06 43 views
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 ++在沒有increamenting $ i值,爲什麼?

回答

1

由於後遞增($a++)的操作裝置

$a返回,然後遞增$a由一個。

結賬official document

增加:

及(如@馬特州)預先遞增運算符(++$a)是指增量,然後返回。

所以你的情況,你所用

recursion($i++); 

導致$i返回其當前值到函數調用的參數,然後增量本身之一,所以recursion()總是會得到相同的$i,因爲它在之後,將其用作參數

更改爲

recursion(++$i); 

會有所幫助。

+1

而前增量運算符('++ $ a')意味着增加1,然後*然後*返回。 – Matthew