При итерации через файл csv с использованием PHP SplFileObject и флага READ_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 }
Вы также хотите установить флаг SplFileObject::SKIP_EMPTY
, а для этого также использовать SplFileObject::READ_AHEAD
.
Флаг SplFileObject::SKIP_EMPTY
делает то, что он говорит на SplFileObject::SKIP_EMPTY
: он пропускает пустые строки. Затянувшаяся строка в вашем файле считается пустой строкой.
(Помимо этого: SplFileObject::READ_AHEAD
необходим, чтобы SplFileObject::SKIP_EMPTY
мог выполнять свою работу. Следующая строка должна быть прочитана внутри, так что PHP может определить, пуст или нет.)
Таким образом, ваш код будет выглядеть (обернут на несколько строк, чтобы вы могли его прочитать):
$file->setFlags(SplFileObject::READ_CSV | SplFileObject::SKIP_EMPTY | SplFileObject::READ_AHEAD);