我写了这段代码:
$handle = fopen('upload/EFT.csv', "r");
while (! feof($handle)) {
print_r(fgetcsv($handle));
}
fclose($handle);
这是文件:
AKRV0002,AKR,V0002,Akron
AKRV0006,AKR,V0006,Akron
AKRV0007,AKR,V0007,Akron
AKRV0011,AKR,V0011,Akron
AKRV0012,AKR,V0012,Akron
ATLV0019,ATL,V0019,ATLANTA
ATLV0021,ATL,V0021,ATLANTA
它返回:
Array ( [0] => AKRV0002 [1] => AKR [2] => V0002 [3] => Akron AKRV0006 [4] => AKR [5] => V0006 [6] => Akron AKRV0007 [7] => AKR [8] => V0007 [9] => Akron AKRV0011 [10] => AKR [11] => V0011 [12] => Akron AKRV0012 [13] => AKR [14] => V0012 [15] => Akron ATLV0019 [16] => ATL [17] => V0019 [18] => ATLANTA ATLV0021 [19] => ATL [20] => V0021 [21] => ATLANTA
如何让它返回新数组中的每一行?
答案 0 :(得分:4)
了解数组位置3是“Akron AKRV0006” - 这是第1行的最后一个值,第2行的第一个值。似乎没有正确读取换行符。没有你的原始文件,我不知道为什么。
修复后,您会看到fgetcsv一次只读取一行(换句话说,返回一个数据来自只有一行),而不是所有线路一下子。因此,您需要循环并将每个数组添加到另一个数组,直到fgetcsv不再返回数据:
$data = array();
while ($row = fgetcsv($handle)) {
$data[] = $row;
}
答案 1 :(得分:1)
你碰巧使用旧的Mac电脑吗?
“注意:如果PHP在Macintosh计算机上读取或创建文件时没有正确识别行结尾,启用auto_detect_line_endings运行时配置选项可能有助于解决问题。”