0

我正在尝试在 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 的每一行?

4

2 回答 2

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);
}
于 2013-03-14T04:32:20.813 回答
1

尝试更改这一行。可能是换行有问题。

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) 
于 2013-03-14T04:58:29.867 回答