fputcsv 在新行中添加“,”

问题描述 投票:0回答:1

我将数据导出到 csv。我查了很多资料,问题依然存在。为了测试我创建了这个数组:

$daten[] = "HEAD1,HEAD2,HEAD3\n";
$daten[] = "VALUE1,VALUE2,VALUE3\n";

我通过

导出到csv
$fp = fopen('path_to/filename.csv', 'w');
fputcsv($fp, $daten, ",", '"',"\", "\n" );

生成的 csv 在编辑器中看起来与预期略有不同:

“头1,头2,头3
“,”值1,值2,值3

因此文件以“开始和结束,每个新行都以“,”表示欢迎

我刚刚用过

fputcsv($fp, $daten) 

=> 相同的结果 尝试过 对于数据 => 相同的结果

感谢您的帮助或提示

php csv fputcsv
1个回答
0
投票

这不是一个数组,这是一个已经格式化为类似于 CSV 的字符串:

$daten[] = "HEAD1,HEAD2,HEAD3\n";

该字符串被视为一个单列值。 PHP 不知道您要将这些视为单独的值。

如果您有:

$daten[] = "one";
$daten[] = "two";

然后

fputcsv($daten)
,您将得到用逗号分隔的两个值:

one,two

您的示例中已经包含逗号,因此必须对它们进行转义。你会得到一行两列,因为你传入的内容是:

"HEAD1,HEAD2,HEAD3\n","VALUE1,VALUE2,VALUE3\n"

如果您想要两行,每行三列,则需要每行调用一次 fputcsv(),每次传递一个列数组:

fputcsv($fp, ['HEAD1', 'HEAD2', 'HEAD3']);
fputcsv($fp, ['VALUE1', 'VALUE2', 'VALUE3']);
© www.soinside.com 2019 - 2024. All rights reserved.