php返回一次for循环

时间:2016-04-27 20:53:48

标签: php for-loop

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

该功能会检查从1到x =总消息的文件夹中的所有电子邮件。

并且在该函数内部有一个脚本,用于检查电子邮件是否是垃圾邮件,如果是,则将其从服务器中删除。

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

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

如果发生这种情况,我该怎么回事?

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
  }
}

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

在这种情况下,您最好使用while循环

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