在php

时间:2017-02-14 14:12:19

标签: php excel csv

我有一个代码,其中上传了一个csv文件,从中提取数据并上传到数据库。一切正常,但我怎样才能跳过空行并继续读取包含数据的行。

这是我从csv文件中提取数据的代码

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

}

4 个答案:

答案 0 :(得分:1)

如果你使用PHP的SplFileObject而不是基本的fgetcsv()函数,它有内置选项来跳过空行:

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

答案 1 :(得分:1)

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

这是因为fgetcsv返回一个非空数组,其中包含一个null元素。

答案 2 :(得分:0)

尝试

if ($data === null) continue;

我没有测试它,但我认为它应该可以工作。

答案 3 :(得分:0)

试试这个

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;
    }
}