You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP读取CSV文件仅能获取首行,如何读取全部3行数据?

解决PHP读取CSV仅能获取第一行的问题

嘿,我来帮你搞定这个头疼的问题!从你贴的代码片段来看,大概率是这几个原因导致只能读到第一行,咱们一步步排查解决:

1. 检查循环里的提前退出逻辑

你代码里写了$cond = 0,如果后面跟着类似if($cond == 0) break;或者return;的语句,那循环只会执行一次就直接退出了!这是最常见的坑,先把这个逻辑去掉或者调整成符合你需求的样子。

2. 解决换行符识别问题

有些CSV文件(尤其是Windows下生成的)换行符是\r而不是标准的\n,这会让fgetcsv误以为文件已经读完。解决方法是用二进制模式打开文件,把fopen($fname, "r")改成fopen($fname, "rb"),这样PHP就能正确识别所有换行符了。

3. 完整的修正代码示例

我给你写了一个能正常读取所有行的完整代码,你可以直接参考:

$fname = "你的CSV文件路径.csv";
$rowCount = 0;

if (file_exists($fname)) {
    // 用二进制模式打开,兼容不同系统的换行符
    if (($handle = fopen($fname, "rb")) !== FALSE) {
        // 循环读取每一行,直到文件结束
        while (($rowData = fgetcsv($handle, 1000, ",")) !== FALSE) {
            $fieldCount = count($rowData);
            $rowCount++;
            
            // 先打印整行数据,方便你确认是否读取成功
            echo "第 $rowCount 行,包含 $fieldCount 个字段:<br>";
            print_r($rowData);
            echo "<br><br>";
            
            // 这里放你的业务逻辑,比如提取指定字段
            // $owner = $rowData[6];
            // $telephone = $rowData[5];
            // $id = $rowData[0];
            // echo "owner: $owner, telephone: $telephone, id: $id<br>";
        }
        // 记得关闭文件句柄,养成好习惯
        fclose($handle);
    } else {
        echo "抱歉,无法打开CSV文件!";
    }
} else {
    echo "CSV文件不存在,请检查路径!";
}

调试小技巧

运行代码后,如果还是有问题,先看print_r($rowData)的输出:

  • 如果只输出一次,说明循环只执行了一次,那肯定是你代码里有提前退出的逻辑;
  • 如果输出多次但某些行是空的,那可能是CSV文件本身有格式问题(比如空行或者分隔符不对)。

按这个方法调整,应该就能读取到所有3行了!

内容的提问来源于stack exchange,提问作者Saarah Asad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:17:43