PHP解析CSV仅返回第1行

PHP解析CSV仅返回第1行,php,parsing,csv,Php,Parsing,Csv,我试图用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, ",",

我试图用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);
}
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);
}

}

除了CSV的每一行,我需要做什么才能得到我想要的结果(即C-QTM0039326-2288314208)?

您已经关闭了循环中的文件句柄,因此下一次迭代中没有任何内容

应该是这样的:

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);
}
if($handle=fopen(“easy.csv”,“r”)!==FALSE){
而($data=fgetcsv($handle,1000,“,”,“\n”)!==FALSE)
{
//对这里的数据做点什么
echo$data[0]。“-”$data[1]。“-”$data[2]。“
”; } fclose($handle); }
您已经关闭了循环中的文件句柄,因此在下一次迭代中没有任何内容

应该是这样的:

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);
}
if($handle=fopen(“easy.csv”,“r”)!==FALSE){
而($data=fgetcsv($handle,1000,“,”,“\n”)!==FALSE)
{
//对这里的数据做点什么
echo$data[0]。“-”$data[1]。“-”$data[2]。“
”; } fclose($handle); }
尝试更改这一行。可能是断线有问题

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) 

试着换一行。可能是断线有问题

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) 

这仍然只返回第一个结果。我已经编辑了这个问题以结束循环。这仍然只返回第一个结果。我对问题进行了编辑,以结束循环。虽然这不是正确的答案,但它引导我找到了答案。CSV中存在问题,无法识别换行符。我在每一行的末尾添加了一个“;”,并改为while($data=fgetcsv($handle,1000,“;”)!==FALSE),这很有效。在你的回答中,自动检测也起到了作用——所以现在我必须看看CSV,以及它为什么会发出重击线。谢谢虽然这不是正确的答案,但它让我找到了答案。CSV中存在问题,无法识别换行符。我在每一行的末尾添加了一个“;”,并改为while($data=fgetcsv($handle,1000,“;”)!==FALSE),这很有效。在你的回答中,自动检测也起到了作用——所以现在我必须看看CSV,以及它为什么会发出重击线。谢谢