[PHP] Re: problem with for loop

[email protected] ("Craige Leeder")
Newsgroups php.general
Message-ID <[email protected]>
I think Peter is probably right. In the case he is not however, can
 you post a print_r of $multiArray.

 - Craige



 On Fri, May 2, 2008 at 7:24 AM, Peter Ford <[email protected]> wrote:
 >
 > 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 2
 > >
 > >    #  Connect up
 > >    $host ="domain.com";
 > >    $port ="110";
 > >    $mailtype = "pop3";
 > >    $mailbox ="INBOX";
 > >    $username ="[email protected]";
 > >    $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;
 > >       }
 > >   }
 > >
 > > }
 > >
 > >
 > >
 >
 >  I 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
 >
 >
 >
 >  --
 >  PHP General Mailing List (http://www.php.net/)
 >  To unsubscribe, visit: http://www.php.net/unsub.php
 >
 >
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.