我有这个函数,它逐行读取csv文件并在每行的第一列中查找特定标签,然后如果找到label,则将此找到的标签旁边的所有列读入数组,直到列值为空。它曾经工作正常,但最近我注意到它开始跳过文件的第一行。
如果我在文件的顶部添加一个空行,它会很好地读取行,但是如何从第一行读取它呢?
我使用PHP版本5.5.18并且php版本在不久前升级了,如果是PHP版本错误降级版本不是我的解决方案...
是否有任何替代功能或者可能是强制它从第一行读取的方法,或者可能是关于如何实现这一目标的建议?
function getDataByLabel($label){
if(($filePointer = fopen($this->path, "r"))!==FALSE){
//reading each line
while (($data = fgetcsv($filePointer, 0, ",",'"')) !== FALSE) {
if(trim(strtolower($data[0]))==trim(strtolower($label))){
$i=0;
$c=1;
// if column is not empty we add this value to an array
while(!empty($data[$c])){
$label = trim(ucfirst(strtolower($label)));
$this->param[$label][$i] = $data[$c];
$i++;
$c++;
}
}
}
}
}
答案 0 :(得分:-1)
将csv文件另存为带有签名的UTF8-时,它将跳过第一行。使用Emeditor保存为无签名的UTF8,不会跳过第一行。