我正在尝试输出csv文件中的每一行,似乎忽略了分隔符...我确定我的语法在某处错了,但似乎无法确定它... < / p>
CSV文件如下所示:
ID,Code,Count
TM768889,02001,10
TM768889,02002,10
TM768889,02003,10
TM768889,02004,10
TM768889,02005,10
我正在尝试输出:
0 - ID,Code,Count
1 - TM768889,02001,10
2 - TM768889,02002,10
3 - TM768889,02003,10
4 - TM768889,02004,10
5 - TM768889,02005,10
但相反,它正在输出:
0 - ID
1 - Code
2 - Count TM768889
3 - 02001
4 - 10 TM768889
5 - 02002
6 - 10 TM768889
7 - 02003
8 - 10 TM768889
9 - 02004
10 - 10 TM768889
11 - 02005
12 - 10
这是我的代码:
$row = 0;
if(($handle = fopen($_FILES["Filedata"]["tmp_name"], "r")) !== FALSE) {
$string = '';
while(($line = fgetcsv($handle,1000,",")) !== FALSE) {
$num = count($line);
$row++;
for($c=0; $c < $num; $c++) {
$string .= $c.' - '.$line[$c].'<br />';
}
}
fclose($handle);
echo $string;
}
答案 0 :(得分:1)
为什么要打扰fgetcsv
?你只是采取行并将其吐出来,所以你似乎可以使用fgets
代替:
$row = 0;
if(($handle = fopen($_FILES["Filedata"]["tmp_name"], "r")) !== FALSE) {
$string = '';
while(($line = fgets($handle)) !== FALSE) {
$row++;
$string .= $row.' - '.$line.'<br />';
}
}
fclose($handle);
echo $string;
}
您的问题是,您要为CSV文件中的每个值打印一整行,而不是像您想要的那样整行。
答案 1 :(得分:1)
首先,您的代码不会打印您粘贴的内容。计数器与$ c变量不匹配。
这就是我得到的:
0 - ID
1 - Code
2 - Count
0 - TM768889
1 - 02001
2 - 10
0 - TM768889
1 - 02002
2 - 10
0 - TM768889
1 - 02003
2 - 10
0 - TM768889
1 - 02004
2 - 10
0 - TM768889
1 - 02005
2 - 10
如果您的数据文件不是很大,我建议您使用file()函数将文件加载到数组中。然后你可以循环遍历数组并输出只是直线的值。
$lines=file($_FILES["Filedata"]["tmp_name"]);
foreach($lines as $line) print($line.'<br/>');
如果您需要解析该行,那么只需使用explode()函数获取每个值。