Как удалить дополнительную строку при использовании флагов PHP SplFileObject и READ_CSV?

При итерации через файл 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);