使用fgetcsv是我发现读取系统所需的csv文件的选项。但它似乎每次都不起作用(实际上,当这段代码工作时非常罕见)。
Flight.equals
我尝试通过在代码之前调用它来检查行结束,但没有太大成功。
if (($handle = fopen($file, 'r')) !== FALSE) {
set_time_limit(0); // necessary if a large csv file
$row = 0;
while (($data = fgetcsv($handle, 0, ',')) !== FALSE) {
print_r($data);
// .. here I do some stuff with the data
// .. The result should be an array with 5 columns and it run multiple times (for the amount of lines in the file)
// .. The result however is one array with a over 9000 columns (really over 9000, it's 9489 in the file that I'm testing)
}
fclose($handle);
die();
}
该文件由客户端由另一个程序导出,我无法“更新”以满足软件的需要。有没有办法在csv上处理这个ini_set('auto_detect_line_endings', true);
/ encoding
问题?
答案 0 :(得分:0)
来自PHP Manual(我知道的激进想法)
长度参数
必须大于CSV文件中的最长行(以字符为单位)(允许尾随行尾字符)。它在PHP 5中成为可选项。省略此参数(或在PHP 5.1.0及更高版本中将其设置为0),最大行长度不受限制,这稍微慢一点。
我不知道您正在使用的PHP版本,但尝试将参数设置为合理的,您应该一次开始获得一行。
例如
while (($data = fgetcsv($handle, 4096, ',')) !== FALSE) {