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

使用PHP将动态表单数据导出至CSV文件

用PHP foreach循环把表单数组写入CSV的完整方案

没问题!我一步步给你讲清楚,保证编程新手也能看懂~

第一步:先修正你的表单HTML

首先要注意:如果想让PHP接收到多行的oldc、newc、skey数组,你的表单输入框name属性必须加上[],否则PHP只会拿到最后一行的输入值。修改后的表单片段大概是这样:

<form class="form-inline" id="main-form" action="process.php" method="post">
  <!-- 第一行输入 -->
  <div class="input-group mb-3">
    <input required name="oldc[]" type="text" placeholder="旧内容" class="form-control" />
    <input required name="newc[]" type="text" placeholder="新内容" class="form-control" />
    <input required name="skey[]" type="text" placeholder="关键词" class="form-control" />
  </div>
  <!-- 可以复制上面的div添加更多行,比如第二行、第三行... -->
  <div class="input-group mb-3">
    <input required name="oldc[]" type="text" placeholder="旧内容" class="form-control" />
    <input required name="newc[]" type="text" placeholder="新内容" class="form-control" />
    <input required name="skey[]" type="text" placeholder="关键词" class="form-control" />
  </div>
  <button type="submit" class="btn btn-primary">提交写入CSV</button>
</form>

第二步:编写处理数据的process.php文件

这部分是核心,我写了详细的注释,你直接复制就能用:

<?php
// 先判断是不是表单POST提交,并且三个数组都存在
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['oldc'], $_POST['newc'], $_POST['skey'])) {
    // 从POST里取出三个数组
    $oldcList = $_POST['oldc'];
    $newcList = $_POST['newc'];
    $skeyList = $_POST['skey'];

    // 打开CSV文件:
    // 'a' = 追加模式(新数据加在文件末尾,不会覆盖旧内容)
    // 'w' = 覆盖模式(每次提交都会清空旧内容,写新数据)
    // 如果文件不存在,PHP会自动创建它
    $csvHandle = fopen('data.csv', 'a');

    // 可选:写入CSV表头(如果是第一次创建文件,或者需要表头的话)
    // 不需要的话就把下面这行注释掉
    fputcsv($csvHandle, ['旧内容', '新内容', '关键词']);

    // 用foreach循环遍历数组,把每行数据写入CSV
    // 这里遍历oldcList的索引,对应取newc和skey的同索引值
    foreach ($oldcList as $rowIndex => $oldContent) {
        // 保险起见,先判断对应索引的newc和skey是否存在,避免报错
        $newContent = isset($newcList[$rowIndex]) ? $newcList[$rowIndex] : '';
        $keyword = isset($skeyList[$rowIndex]) ? $skeyList[$rowIndex] : '';

        // 把三个值拼成一行,用fputcsv写入(自动处理CSV格式问题,比如逗号、引号)
        fputcsv($csvHandle, [$oldContent, $newContent, $keyword]);
    }

    // 写完一定要关闭文件
    fclose($csvHandle);

    // 给用户一个成功提示
    echo "<p style='color:green;'>数据已成功写入CSV!<a href='index.html'>返回继续添加</a></p>";
} else {
    // 如果不是POST提交或者数据不全,提示错误
    echo "<p style='color:red;'>请通过表单提交完整数据!</p>";
}
?>

关键知识点解释

  • 表单name加[]:这是让PHP把多个同name的输入转成数组的关键,没有[]的话,PHP只会保留最后一个输入的值,循环自然无法运行。
  • fputcsv函数:比你自己手动拼接字符串靠谱,它会自动处理CSV的格式规则(比如内容里有逗号的话,会自动用引号包裹)。
  • 数组索引判断:防止因为某行漏填了某个字段,导致数组长度不一致而报错。
  • 文件模式选择:如果是要累计数据就用a,如果每次提交都是全新数据就用w。

内容的提问来源于stack exchange,提问作者BIll Cosby

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:46:18