我有这个脚本,它基本上抓住了我的“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 ));
?>
答案 0 :(得分:17)
您可以阅读documentation for fgetcsv()
:
CSV文件中的空白行将作为包含单个空字段的数组返回,不会被视为错误。
在将数据添加到数据数组之前检查它应该就足够了:
while (($result = fgetcsv($in)) !== false) {
if (array(null) !== $result) { // ignore blank lines
$csv[] = $result;
}
}
答案 1 :(得分:3)
这是100%经过测试,最简单的方法。解释是空行使fgetcsv返回一个非空数组,里面只有一个null元素。
for( var arr in dogs){
if(arr.length == 0){
//code goes here
}
}
答案 2 :(得分:1)
简而言之
$csv = array_map('str_getcsv', file($file_path, FILE_SKIP_EMPTY_LINES));
说明
file
将文件内容读入数组。FILE_SKIP_EMPTY_LINES
将跳过文件中的空行。array_map
将在数组的每个元素上应用函数str_getcsv
。str_getcsv
将解析字符串输入中的字段csv
格式并返回包含字段的数组。
详细了解str_getcsv
详细了解file
详细了解array_map