【问题标题】:How to add input data to CSV file in PHP?如何在 PHP 中将输入数据添加到 CSV 文件?
【发布时间】:2019-01-29 11:10:58
【问题描述】:

我需要将表单输入数据从数组添加到 PHP 中的 CSV 文件中。

我尝试使用 foreach 函数添加数据,但数据没有出现在 CSV 文件中,代码如下:

$values = [
    'orderperson',
    'address',
    'postnumber',
    'city',
    'phone',
    'email'
];

$fh = fopen("file.csv", "w");
foreach($values as $info) {
    fputcsv($fh, $_POST[$info]);
}

如果我是正确的,我想在这里完成什么将所有数据放在一行中?我如何在文件中添加数据,就像这样在一行中只有一个数组元素:

1 位订货人
2地址
3 邮编

不像 1 订货人 2 地址 3 邮编

【问题讨论】:

    标签: php forms csv input


    【解决方案1】:

    fputcsv() 分隔符必须是单个字符

    $fh = fopen("file.csv", "w");
    $delimiter = ',';
    fputcsv($fh, $values, $delimiter);
    

    或者,你可以试试这个:

    $values = [
    'orderperson',
    'address',
    'postnumber',
    'city',
    'phone',
    'email'
    ];
    
    $path = 'file.csv';
    $handle = fopen($path, 'w+');
    foreach($values as $value) {
        fwrite($handle, $value . ',' . PHP_EOL);
    }
    fclose($handle);
    

    您可以稍后修剪最后一个逗号或使用 count() 并避免为数组中的最后一个元素添加分隔符。


    另一方面,如果您不希望使用逗号,而是使用换行符作为分隔符(但是,这不再是 CSV 文件!!),您可以将上面的 fwrite() 行替换为:

    fwrite($handle, $value . PHP_EOL);
    

    【讨论】:

    • 我不需要 $_POST 因为这些值是输入数据吗?
    • 好吧,如果不知道您的输入端,就没有办法说出来。无论如何,您当然可以用您的 $_POST 输入替换 $values 数组!这是对您的问题如何在新行中写入值的回答,而不是如何处理输入。
    【解决方案2】:

    好的。你似乎走在正确的道路上。如果您打算将 $values 数组中的每个条目放在生成的 .csv 文件的新行中,请执行以下操作:

    1. 创建一个函数以将 $data 数组中设置的字段与传入的 $_POST 数据合并
    $postToCsv = function (array $fields, array $super) {
      return array_map(function ($field, $val) {
        return array($field, $val);
      }, $fields, $super);
    };
    
    
    1. 修改循环以使用上面sn-p中的函数。
    foreach ($postToCsv($values, $_POST) as $field) {
      fputcsv($fh, $field);
    }
    

    还有,记得关闭文件操作。

    fclose($fh);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-26
      • 2017-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-25
      • 2011-04-28
      相关资源
      最近更新 更多