";继续”;没有的替代方案;t跳过,但重复循环


"Continue" alternative that doesn't skip but repeats the loop

我使用的是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();

虽然这在理论上应该有效
我想说的是绝对糟糕的编程实践,因为你很有可能会出现一个永无止境的循环。