我有一个代码,其中上传了一个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
}
答案 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;
}
}