创建 csv 文件时结果为空
Empty result while creating a csv file
我有一个包含键和值的数组,我想将其作为 csv 格式的附件通过电子邮件发送。我正在尝试的是:
...
$mail->addStringAttachment(create_csv($dataCSV), "test.csv", $encoding = 'base64', $type = "text/csv", $disposition = 'attachment');
...
在此之下,我声明我的 create_csv
函数
function create_csv(array &$array) {
if (count($array) == 0) {
return null;
}
ob_start();
$df = fopen("php://output", 'w');
foreach ($array as $key => $value) {
fputcsv($df, $key);
fputcsv($df, $value);
}
fclose($df);
return ob_get_clean();
}
这最终会在我的电子邮件中附加一个没有内容的文件,即使我调试 key
、value
时它们具有预期的值。
为什么会这样,我该如何解决?
您误用了 fputcsv。该函数的第二个参数是 CSV 中的一行。
如果将循环更改为
foreach ($array as $key => $value) {
fputcsv($df, [$key, $value]);
}
附加的 csv 将是一个包含 2 个逗号分隔值的行列表。例如对于 $dataCSV = ['one','two','three']
,附件将是
0, one
1, two
2, three
我有一个包含键和值的数组,我想将其作为 csv 格式的附件通过电子邮件发送。我正在尝试的是:
...
$mail->addStringAttachment(create_csv($dataCSV), "test.csv", $encoding = 'base64', $type = "text/csv", $disposition = 'attachment');
...
在此之下,我声明我的 create_csv
函数
function create_csv(array &$array) {
if (count($array) == 0) {
return null;
}
ob_start();
$df = fopen("php://output", 'w');
foreach ($array as $key => $value) {
fputcsv($df, $key);
fputcsv($df, $value);
}
fclose($df);
return ob_get_clean();
}
这最终会在我的电子邮件中附加一个没有内容的文件,即使我调试 key
、value
时它们具有预期的值。
为什么会这样,我该如何解决?
您误用了 fputcsv。该函数的第二个参数是 CSV 中的一行。
如果将循环更改为
foreach ($array as $key => $value) {
fputcsv($df, [$key, $value]);
}
附加的 csv 将是一个包含 2 个逗号分隔值的行列表。例如对于 $dataCSV = ['one','two','three']
,附件将是
0, one
1, two
2, three