我使用PHP的foreach()
,有時,當內部的代碼不會做我想做什麼,我想環路重新嘗試同樣的水平,而不是繼續到下一個。「繼續」的替代方案,不會跳過但重複
這可能嗎?
例子:
foreach($pics AS $pic){
if(!upload($pic)){
again; // something like this
}
}
我使用PHP的foreach()
,有時,當內部的代碼不會做我想做什麼,我想環路重新嘗試同樣的水平,而不是繼續到下一個。「繼續」的替代方案,不會跳過但重複
這可能嗎?
例子:
foreach($pics AS $pic){
if(!upload($pic)){
again; // something like this
}
}
沒有,但你可以把while循環的循環中,這種具有同等的行爲,你在上面的願望。但是,您應該修改它以使用計數器,並在X多次重試後停止以防止無限循環。
foreach($pics AS $pic){
while(!upload($pic));
}
您將需要另一個循環,其循環一定次數(您的最大重試次數)環繞你的if
,或直到手動break
出它時,你的代碼是否能夠成功。
你可以使用goto
我想,但這是通常皺起了眉頭,並會做同樣的事情作爲一個內部循環無論如何。
function dosomething() {
foreach($pics AS $pic){
if(!upload($pic)){
break;
}
}
$success = true;
}
$success=false;
while(!$success) dosomething();
雖然這在理論上應該工作。
我會說絕對不好的編程習慣,因爲你永無止境的循環的一個很好的機會。
我從來沒有用過轉到自己,但不認爲工作只是通過代碼向前跳過? – Bradmage 2012-04-03 14:30:17
@BradleyForster老實說,不知道。從我的C背景中思考一下,我不確定PHP中的限制。 – spencercw 2012-04-03 14:31:13