Re: problem with for loop
| From: | Peter Ford | Date: | Fri, 02 May 2008 11:24:56 +0000 |
| Subject: | Re: problem with for loop | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-273801@lists.php.net to get a copy of this message | ||
Richard Kurth wrote:
Way does my for loop not complete the task if there are 4 emails it only process 3 emails through the foreach loop if there is 3 it only process 2I think you need to check the boundary conditions on your loop. As you write it, for($i = 1; $i <= $number; $i++) if $number is 4 then $i will have the values 1,2,3,4. Perhaps message list is zero-based, and you actually need to count from zero: for($i = 0; $i < $number; $i++) so you would get $i to read 0,1,2,3 The manual page doesn't explicitly say the the message number is one-based, and most real programming languages these days use zero-based arrays... -- Peter Ford phone: 01580 893333 Developer fax: 01580 893399 Justcroft International Ltd., Staplehurst, Kent# Connect up $host ="domain.com"; $port ="110"; $mailtype = "pop3"; $mailbox ="INBOX"; $username ="bounce@domain.com"; $password ="boat1234"; $conn = @imap_open("{" . $host . ":" . $port . "/" . $mailtype . "/notls}" . $mailbox, $username, $password);$number=imap_num_msg($conn); for($i = 1; $i <= $number; $i++) { $file="C:\web\bouncehandler\eml\em$i"; imap_savebody($conn,$file,$i); $file=file_get_contents("C:\web\bouncehandler\eml\em$i"); $multiArray = Bouncehandler::get_the_facts($file); $EMAIL = $the['recipient']; foreach($multiArray as $the){switch($the['action']){ case 'failed': $sql="UPDATE contacts SET emailstatus = 'Fatal-Bounced' WHERE emailaddress = '$EMAIL'"; mysql_query($sql) or die("Invalid query: " . mysql_error()); break; case 'transient': $sql="UPDATE contacts SET emailstatus = 'Bounced' WHERE emailaddress = '$EMAIL'"; mysql_query($sql) or die("Invalid query: " . mysql_error()); break; case 'autoreply': $sql="UPDATE contacts SET emailstatus = 'Bounced' WHERE emailaddress = '$EMAIL'"; mysql_query($sql) or die("Invalid query: " . mysql_error()); break; default: //don't do anything break; }} }