fgetcsv пропустить пустые строки в файле
У меня есть этот скрипт, который я сделал, он в основном захватывает все файлы в моей папке "журналы" и объединяет их все в один файл массива, моя единственная проблема в том, что иногда скрипт ломается, если есть пустая строка или пустая строка! как я могу сказать ему автоматически пропустить пустые пустые строки и перейти к следующему? пустые строки не обязательно вверху или внизу! может быть в середине файла csv
<?php
$csv = array();
$files = glob('../logs/*.*');
$out = fopen("newfile.txt", "w");
foreach($files as $file){
$in = fopen($file, "r");
while (($result = fgetcsv($in)) !== false)
{
$csv[] = $result;
}
fclose($in);
fclose($out);
}
print json_encode(array('aaData' => $csv ));
?>
2 ответов
Как вы можете прочитать в документация fgetcsv()
:
пустая строка в CSV-файле будет возвращена в виде массива, содержащего одно нулевое поле, и не будет рассматриваться как ошибка.
проверка этого перед добавлением в массив данных должна быть достаточной:
while (($result = fgetcsv($in)) !== false) {
if (array(null) !== $result) { // ignore blank lines
$csv[] = $result;
}
}
это работает 100% протестировано, самый простой способ. Объяснение в том, что пустые строки заставляют fgetcsv возвращать непустой массив только с нулевым элементом внутри.
if ($result[0] == NULL)
continue;