我有一个使用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
}
}
答案 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++;
}
}