fgetcsv只读取第一行并打破while循环

时间:2016-02-24 18:32:17

标签: php

所以,对于某些文件,这个程序刚刚破解是很奇怪的。我输入了500行的文件,它工作正常,但如果我尝试输入1000行或更多,程序只获取csv文件的第一行(标题所在的位置)并打破整个while循环。

我注意到还有另外一些看似相似的问题;然而,当我读完它时,我意识到他们并没有将fgetcsv()调用到循环中。相反,我在while循环中调用该函数。

我的代码如下所示:

if(move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)){
    $goe = fopen($target_file, "r");
    while($data = fgetcsv($goe, filesize($target_file))){
        if(!empty($data[0]) && !empty($data[2])){
            if($data[0] !='brand' && $data[2] !='MPN'){
                $string = $data[0] .' '. $data[2];
                $arrayOfSearches[$data[1]] = $string;    
            }
        }
    }
    fclose($target_file);
}

调试后我意识到它在while循环中输入一次,它进入第一个if条件,但是当它到达第二个时它永远不会进入(有意义,因为第一行是我不喜欢的标题)。我想)。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我最近遇到了同样的问题,在读取 cvs 文件时,该进程将所有行都返回一行,但幸运的是我找到了解决方案,只需将此行添加到您的 PHP 文件中即可:

ini_set('auto_detect_line_endings', true);

希望对你有用。