PHP向CVS传递2D数组



我是一个非常非常新的php,需要帮助。

我已经建立了一个多页表单。此表单上的大多数输入都可以由用户动态创建。

下面是codepen

上的一个工作示例

当多维数组中的数据传递到csv表时,我想以以下方式排列它:Array ( [0] => Position [1] => Unit [2] => Unit President )

这样,如果用户动态地添加两个或三个输入,将更容易看到每个条目。

到目前为止,我只能像这样过滤数组:

$unitLevelPosition = $_POST["unitLevelPosition"];
    $unitLevelPositionValues = "";
    foreach( $unitLevelPosition as $unitPositionValue)
    {
        $educationHistoryValues .= $unitPositionValue;
    }
然后将数组变量添加到打印到cvs的其他变量中,如下所示:

$csvdata = $firstName。","。lastName美元。","。educationHistoryValues美元;我追求的东西可能实现吗?如果有,有人能帮我开始吗?

首先,您应该更改表单的name-attribute。

用unitLevelPosition[]代替unitLevelPosition[0][name_of_field]。对于每一个新的输入字段,索引增加1。例如unitLevelPosition [1] [name_of_field]。然后你将得到一个数组,它应该是这样的:

[
   0 => [
      'position' => value_of_input,
      'unit_president' => value_of_input,
       ... and so on ...
   ],
   1 => [
      'position' => value_of_input,
      'unit_president' => value_of_input,
       ... and so on ...
   ]
]

你要做的下一件事。使用php函数fputcsv (http://php.net/manual/de/function.fputcsv.php)创建csv文件

这边有一个很好的例子,你可以用它来创建你的csv文件。

总之:

$fp = fopen('file.csv', 'w');
foreach( $unitLevelPosition as $fields)
{
    fputcsv($fp, $fields);
}
fclose($fp);

你需要的是这样的东西:

if (!empty($_POST['position'])) {
    $fp = fopen('file.csv', 'w');
    foreach ($_POST['position'] as $key => $position) {
        //Do validation here...
        $fields = [
            'position' => $position,
            'unit' => $_POST['unit'][$key],
            'president' => $_POST['president'][$key],
            'date' => $_POST['date'][$key],
        ];
        fputcsv($fp, $fields, ',');
    }
    fclose($fp);
}

但是像这样修改输入名称:

<input type="text" name="position[]" value="" >
<input type="text" name="unit[]" value="" >
<input type="text" value="president[]">
<input type="text" value="date[]">

相关内容

  • 没有找到相关文章

最新更新