我有一个函数,可以使用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
}