Re: string concatenation with fgets

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2009-11-30 at 09:04 -0800, aurfalien@xxxxxxxxx wrote:

> Hi Shawn,
> 
> Your code looks cleaner then mine so i tried it and got the last entry  
> in the txt file printed twice.
> 
> 
> On Nov 30, 2009, at 7:07 AM, Shawn McKenzie wrote:
> 
> > aurfalien@xxxxxxxxx wrote:
> >> So here is my final test code, notice the check for ' ' in the if.
> >>
> >> Since I'm on Linux, this has to do with whats between the last LF and
> >> EOF which is nothing but this nothing will get printed out.
> >>
> >> $file = fopen("somefile.txt", "r");
> >> while (! feof($file))
> >>    {
> >      $tmp = trim(fgets($file));
> >      if ($tmp != '')
> >>        {
> >          $names = $tmp;
> >>        }
> >>    print $names."sometext\n";
> >>    }
> >> fclose($file);
> >>
> >>
> >
> > -- 
> > Thanks!
> > -Shawn
> > http://www.spidean.com
> 
> 


Remove the if statement and just print out $tmp. The while loop is going
over one extra time than you need, and on that final iteration, $tmp is
an empty string. The if statement only changes $name if $tmp is empty,
so it leaves it as it was, hence you getting the last line printed
twice. Printing out an empty string in this example won't do anything,
and the if statement is also pretty useless as it just copies the value
to another variable on a condition that will only result in the
side-effect you've noticed.

Thanks,
Ash
http://www.ashleysheridan.co.uk



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux