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;