我正在尝试用PHP解析CSV文件并使用这些值,但我的代码只返回CSV文件第一行的数据。
CSV文件如下所示
C, QXM0039326, , X6, 2288314208
C, QXP0039226, 7021130, X6, 100013427
php看起来像这样:
if (($handle = fopen("easy.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",", "\n")) !== FALSE)
{
// do something with the data here
echo $data[0] . " - ". $data[1] . " - ". $data[2] . "</br>" ;
}
fclose($handle);
}
这会产生$ data [0]等的预期结果,但只会产生csv的第一行。 所以我得到这样的输出结果:
C - QTM0039326 - 2288314208
这正是我想要的输出,但对于CSV中的每一行。
我试图迭代这样的$ data
if (($handle = fopen("easy.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",", "\n")) !== FALSE)
{
// do something with the data here
foreach ($data as $row){
echo $row[0] . " - ". $row[1] . " - ". $row[4] . "</br>" ;
}
fclose($handle);
}
}
但这给了我一个非常糟糕的结果(继续):
C - -
Q - T - 0
- -
X - 6 -
2 - 2 - 3
我需要做些什么来获得我所追求的结果(即C-QTM0039326 - 2288314208),但是对于CSV的每一行?
答案 0 :(得分:2)
你已经关闭了循环中的文件句柄,所以在下一次迭代中没有任何东西......
应该是这样的:
if (($handle = fopen("easy.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",", "\n")) !== FALSE)
{
// do something with the data here
echo $data[0] . " - ". $data[1] . " - ". $data[2] . "</br>" ;
}
fclose($handle);
}
答案 1 :(得分:1)
尝试更改这一行。可能是换行有问题。
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)