我有一个包含键和值的数组,我希望将其作为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
它们也有预期值。
为什么会这样,我该如何解决?
答案 0 :(得分:2)
您滥用fputcsv。函数的第二个参数是CSV中的一行。
如果您将循环更改为
foreach ($array as $key => $value) {
fputcsv($df, [$key, $value]);
}
附加的csv将是具有2个以逗号分隔的值的行列表。例如对于$dataCSV = ['one','two','three']
,附件将是
0, one
1, two
2, three