PHP 在 for 循环中返回一次


php go back one time in for loop

我有一个函数,可以使用php imap函数检查来自imap服务器的电子邮件。

该函数检查文件夹中从 1 到 x=总邮件数的所有电子邮件。

在该功能中,有一个脚本可以检查电子邮件是否是垃圾邮件,如果是,则将其从服务器中删除。

删除垃圾邮件后,文件夹中的邮件总数将减少 1。for 循环会跳过下一封电子邮件。

例如,收件箱有 10 封电子邮件,for 循环从 1 到 10 开始。如果发现电子邮件 5 是垃圾邮件,则会将其删除,但发生这种情况时,6 的电子邮件变为 5,for 循环会跳过它,因为它尝试读取电子邮件 6。

发生这种情况时,我怎么能回到 1 ?

for(var $i = 1; $i<=$totalMessages; $i++){
  if(isSpam()==true){
    //delete from imap server
    $i = $i-1 //does not work, $i = $i -2 does not work eighter
  }
}
在这种情况下,

你最好使用while循环

$index = 1;
while( $index <= $totalMessages) {
  if(isSpam()==true){
    //delete from imap server
  } else {
    $index++;
  }
}

这类问题通常通过向后迭代来解决:

for(var $i = $totalMessages; $i>= 1; $i--){
    // ...etc
}