2012-04-03 22 views
0

我使用PHP的foreach(),有時,當內部的代碼不會做我想做什麼,我想環路重新嘗試同樣的水平,而不是繼續到下一個。「繼續」的替代方案,不會跳過但重複

這可能嗎?

例子:

foreach($pics AS $pic){ 
    if(!upload($pic)){ 
    again; // something like this 
    } 
} 

回答

5

沒有,但你可以把while循環的循環中,這種具有同等的行爲,你在上面的願望。但是,您應該修改它以使用計數器,並在X多次重試後停止以防止無限循環。

foreach($pics AS $pic){ 
    while(!upload($pic)); 
} 
0

您將需要另一個循環,其循環一定次數(您的最大重試次數)環繞你的if,或直到手動break出它時,你的代碼是否能夠成功。

你可以使用goto我想,但這是通常皺起了眉頭,並會做同樣的事情作爲一個內部循環無論如何。

+0

我從來沒有用過轉到自己,但不認爲工作只是通過代碼向前跳過? – Bradmage 2012-04-03 14:30:17

+0

@BradleyForster老實說,不知道。從我的C背景中思考一下,我不確定PHP中的限制。 – spencercw 2012-04-03 14:31:13

0
function dosomething() { 
    foreach($pics AS $pic){ 
     if(!upload($pic)){ 
      break; 
     } 
    } 
    $success = true; 
} 

$success=false; 
while(!$success) dosomething(); 

雖然這在理論上應該工作。
我會說絕對不好的編程習慣,因爲你永無止境的循環的一個很好的機會。