Re: string concatenation with fgets

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

 



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

> Hi Ash,
> 
> Actually I need the if because the code will print out an empty line  
> and add "sometext" to it.
> 
> So without the if check for an empty line, at the end of the loop I'll  
> get sometext.  For example, if the file I am processing called  
> somename.txt has
> 
> a
> b
> c
> 
> in it.  I'll have;
> 
> asometext
> bsometext
> csometext
> 
> but w/o the if check, I'll also have
> 
> sometext
> 
> as well.
> 
> 
> 
> On Nov 30, 2009, at 9:24 AM, Ashley Sheridan wrote:
> 
> > 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
> >
> >
> 


Then put the print statement inside the if, not the assignation,
otherwise you will always get that last line!

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