创建csv文件时清空结果

时间:2015-12-02 08:40:33

标签: php phpmailer

我有一个包含键和值的数组,我希望将其作为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();
}

这虽然最终会在我的电子邮件中附加没有内容的文件,即使我在那时调试keyvalue它们也有预期值。

为什么会这样,我该如何解决?

1 个答案:

答案 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