2015-12-02 72 views
2

我有一個數組,其中包含我想以csv格式附件發送的鍵和值。我試圖這樣的:創建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在這一點上,他們有預期的價值。

這是爲什麼,我該如何解決?

+0

檢查「create_csv」實際上是否返回您所期望的。我還建議使用'php:// temp'流來代替輸出,所以你不需要使用笨拙的輸出緩衝,就像[本例中]一樣(http://php.net/manual/en/wrappers .php.php#refsect1-wrappers.php-例子)。 – Synchro

+0

@Synchro多數民衆贊成它不是。它什麼都不返回。我應該嘗試使用一個臨時文件,而且我會,但我現在很固執,我想看看我做錯了什麼。 – dearn44

回答

2

您誤用fputcsv。該函數的第二個參數是CSV中的一行。

如果你改變你的循環來

foreach ($array as $key => $value) { 
    fputcsv($df, [$key, $value]); 
} 

附件中的CSV將行與2昏迷分隔值列表。例如對於$dataCSV = ['one','two','three']附件將是

0, one 
1, two 
2, three 
+0

經驗教訓,謝謝。 – dearn44