使用PHP SplFileObject和READ_CSV标志时如何删除额外的行?

时间:2015-09-27 08:44:21

标签: php

当使用PHP SplFileObjectREAD_CSV标志迭代csv文件时,我得到一个带有null值的额外行。有没有办法自动删除这一行?

$file = new SplFileObject(__DIR__.'/technologies.csv', 'r');
$file->setFlags(SplFileObject::READ_CSV);
foreach ($file as $row) {
    var_dump($row);
}

这将产生一个null值的行。

...
array(1) {
  [0] =>
  NULL
}

1 个答案:

答案 0 :(得分:8)

您还想设置SplFileObject::SKIP_EMPTY标志,并为此工作SplFileObject::READ_AHEAD标志。

SplFileObject::SKIP_EMPTY标志执行它在锡上所说的内容:它跳过空行。文件中的尾部换行计为空行。

(旁白:SplFileObject::READ_AHEAD是必需的,SplFileObject::SKIP_EMPTY可以完成它的工作。需要在内部读取下一行,以便PHP可以确定它是否为空。 )功能

所以,你的代码看起来像(包含多行,所以你可以阅读它):

$file->setFlags(SplFileObject::READ_CSV |
                SplFileObject::SKIP_EMPTY |
                SplFileObject::READ_AHEAD);