coder
coder

Reputation: 93

Skip empty rows in reading csv excel file in php

I have a code where a csv file is uploaded ,the data is extracted from it and uploaded to database.Everything works fine,but how can i skip the empty rows and continue reading the rows with data in it.

This is the code where i extract data from csv file

if (($source = fopen( $csv_file, "r")) !== FALSE)
{
//read data from excel
while (($data = fgetcsv($source, 1000, ",")) !== FALSE)
{
    $question=$data[0];
    $point=$data[1];
    $header=$data[2];
    $footer=$data[3];
    $type_value=$data[4];
    $group_name=$data[5];
        echo $question;

}// while end

}

Upvotes: 1

Views: 4406

Answers (4)

rubydio
rubydio

Reputation: 115

if ($data[0] == NULL)
         continue;

This is because fgetcsv returns a non-empty array with a null element inside.

Upvotes: 1

Mark Baker
Mark Baker

Reputation: 212522

If you use PHP's SplFileObject instead of the basic fgetcsv() function, it has built-in options to skip empty lines:

$file = new SplFileObject($csv_file);
$file->setFlags(SplFileObject::READ_CSV SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE);
foreach ($file as $data) {
    ...
}

Upvotes: 1

Abdullah Mallik
Abdullah Mallik

Reputation: 817

Try this

if (($source = fopen( $csv_file, "r")) !== FALSE)
{
// read data from excel
    while (($data = fgetcsv($source, 1000, ",")) !== FALSE)
    {
        if ((string) $data[0] != '0' and empty($data[0]))
        {
            continue;
        }

        $question   = $data[0];
        $point      = $data[1];
        $header     = $data[2];
        $footer     = $data[3];
        $type_value = $data[4];
        $group_name = $data[5];

        echo $question;
    }
}

Upvotes: 0

Sascha A.
Sascha A.

Reputation: 4636

Try it with

if ($data === null) continue;

I didn't test it, but I sthink it should work.

Upvotes: 0

Related Questions