我正在使用PHP的foreach()
,有时当内部代码没有按我想要的那样做时,我想重新尝试相同的级别,而不是继续下一个级别。
这可能吗?
示例:
foreach($pics AS $pic){
if(!upload($pic)){
again; // something like this
}
}
答案 0 :(得分:5)
不,但你可以在循环中放置一个while循环,这与你上面所希望的行为相同。但是你应该修改它以使用计数器并在X重试之后停止以防止无限循环。
foreach($pics AS $pic){
while(!upload($pic));
}
答案 1 :(得分:0)
您需要将if
环绕另一个循环,循环一定次数(最大重试次数),或者直到您的代码成功时手动break
。
我认为你可以使用goto
,但这通常是不赞成的,并且无论如何都会做与内循环相同的事情。
答案 2 :(得分:0)
function dosomething() {
foreach($pics AS $pic){
if(!upload($pic)){
break;
}
}
$success = true;
}
$success=false;
while( !$success ) dosomething();
虽然这在理论上应该有效 我会说绝对糟糕的编程习惯,因为你很有可能永无止境的循环。