2017-10-07 149 views
1

是當從環和循環的執行從明年指數依然延續(如的GetEnumerator()在C#和使用的MoveNext())從循環返回但循環的執行沒有效果?

problem-

$arr=[0,1,5,9,5]; 
$i=count($arr); 
while($i>0){ 
    // data base operations 
    $_GLOBALS['i']=$_GLOBALS['i']-1; 
    //return some value; 
} 

我返回一些值是在PHP可能是ac#程序員,是PHP的新手,所以任何幫助或想法都將得到高度讚賞?

+0

短awser是 – Webdesigner

+0

號請給碼C#或最終的結果 –

回答

0

作爲控制結構return返回可用於函數(過程)或方法(面向對象)返回一個值,但這是可選的。如果你有一個循環whileforforeach等等,並且你使用return之內,比這將返回到調用模塊的值,並停止循環。

但有辦法做一個循環和instate返回它交給一個靜態對象或全局變量。

1

其實你可以。您在尋找的是來自C#的yield關鍵字。根據php documentation,可以在php中使用相同的關鍵字來實現生成器。

有文檔頁上的一個小例子:

function gen_one_to_three() { 
    for ($i = 1; $i <= 3; $i++) { 
     // Note that $i is preserved between yields. 
     yield $i; 
    } 
} 

$generator = gen_one_to_three(); 
foreach ($generator as $value) { 
    echo "$value\n"; 
} 

上例將輸出:

1 
2 
3