“继续”替代,不跳过但重复循环

时间:2012-04-03 14:21:10

标签: php foreach

我正在使用PHP的foreach(),有时当内部代码没有按我想要的那样做时,我想重新尝试相同的级别,而不是继续下一个级别。

这可能吗?

示例:

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

3 个答案:

答案 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();

虽然这在理论上应该有效 我会说绝对糟糕的编程习惯,因为你很有可能永无止境的循环。