I've created a script to parse through a data file which contains coma
separated fields of data. The script works on Apache, however when I run it
on under Windows (running PHP as a CGI) the script produces an Undefined
offset notice. What is strange about this notice is that the line of code
which contains the array element never gets executed.

Here is what I have:
A data file containing:
=== START OF FILE =====

1,01545,"01612,01545,01505,01609,01606,01562"

=== END OF FILE =====
The first and last lines contain carriage returns. The second or middle line
contains sample data.

The script that reads and parses the data is:

  $countLines = fopen("data.txt", "r");
  while (!feof($countLines))
  {
   $newLine = fgets($countLines, 1024);
   echo "line length:  " . strlen($newLine) . "<br>";
   if(strlen($newLine) > 0)
   {
   $newLine = ereg_replace ("\"", "", $newLine);
   $zip_forward = explode(",",$newLine);
   $location_id = trim($zip_forward[0]);
   echo "array size: " . count($zip_forward) . "  ID: $location_id<br>";
   $zip_to = trim(substr($zip_forward[1], 0, 5));
   }
  }
  fclose($countLines);

What's odd here is that the last line, which has a length of 0, should never
cause the if(strlen($newLine) > 0) to execute the lines of script contained
within the if conditional. And in fact the lines DON'T get executed.
However, on the Windows server I get the following error
PHP Notice: Undefined offset: 1 in \debug.php on line 20. This points to my
code that evaluates the second element of the array $zip_to =
trim(substr($zip_forward[1], 0, 5));

If I never evaluate the $zip_forward[1] array element within the if
conditional, why would PHP test the array $zip_forward for the proper number
of elements?

This script works fine under Apache.

I haven't a clue what is going on.

Comments welcome,
Chris

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to