我需要将数组中的表单输入数据添加到 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个邮递号
答案 0 :(得分: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);
答案 1 :(得分:0)
好的。您似乎走在正确的道路上。如果您打算将$ values数组中的每个条目放在生成的.csv文件的新行中,请执行以下操作:
$postToCsv = function (array $fields, array $super) {
return array_map(function ($field, $val) {
return array($field, $val);
}, $fields, $super);
};
foreach ($postToCsv($values, $_POST) as $field) {
fputcsv($fh, $field);
}
另外,请记住关闭文件操作。
fclose($fh);