У меня есть этот скрипт, который я сделал, он в основном захватывает все файлы в моей папке «logs» и объединяет их все в один файл массива, моя единственная проблема в том, что иногда скрипт ломается, если есть пустая строка или пустая строка! как я могу сказать, что он автоматически пропускает пустые пустые строки и переходит к следующему? пустые строки не обязательно вверху или внизу! может находиться в середине файла 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 )); ?>
Как вы можете прочитать в документации для fgetcsv()
:
Пустая строка в CSV-файле будет возвращена как массив, содержащий одно пустое поле и не будет рассматриваться как ошибка.
Проверять это перед добавлением его в массив данных должно быть достаточно:
while (($result = fgetcsv($in)) !== false) { if (array(null) !== $result) { // ignore blank lines $csv[] = $result; } }
Это работает на 100% проверенный, простейший способ. Объяснение состоит в том, что пустые строки заставляют fgetcsv возвращать непустой массив с нулевым элементом внутри.
if ($result[0] == NULL) continue;