Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make the header row be skipped in my while loop using fgetcsv?

I can't get the new code I've written to skip the first row (header) as the code I was using before did (see bottom).

I'm not receiving any errors, but just can't get it to omit first row.

$file = fopen($uploadcsv,"r");
$column_headers = array();
$row_count = 0;
while(!feof($file)) {   
  if ($row_count==0){
    $column_headers = $file;
  } else {
    print_r(fgetcsv($file));
  }
  ++$row_count;
  }

fclose($file);

Below is the old source that skipped the header, for reference and comparison.

$handle = fopen($uploadcsv, 'r');
$column_headers = array();
$row_count = 0;
while (($data = fgetcsv($handle, 100000, ",")) !== FALSE) {
  if ($row_count==0){
    $column_headers = $data;
  } else {
    print_r($data);
  }
  ++$row_count;
}
fclose($handle);
like image 695
acctman Avatar asked Dec 22 '22 20:12

acctman


2 Answers

Why even count? Just get the headers before looping.

$column_headers = fgetcsv($file);
while(!feof($file)) {
   ...

Also, you're only assigning the file pointer to the variable.

like image 122
Ignacio Vazquez-Abrams Avatar answered Dec 29 '22 12:12

Ignacio Vazquez-Abrams


When $row_count is 0 you are not reading any row.

Change

if ($row_count==0){
    $column_headers = $file;  // just assigning file handle.
}

to

if ($row_count==0){
    $column_headers = fgetcsv($file); // read the row.
}
like image 39
codaddict Avatar answered Dec 29 '22 10:12

codaddict