2012-02-07 122 views
1

我開始研究一個需要多個數組並將它們放入一個csv文件的項目。但是,雖然它正在生成文件,但它通常完全是空的(0 b文件大小)。有時候,如果我錯過了某些東西,它會將錯誤信息放在文件中,或者幾次將數組放入文件中,就好像我已經完成了print_r($ array)一樣。PHP fputcsv生成空文件

目前,我有這樣的:

<?php 

// output headers 
header('Content-Type: text/csv; charset=utf-8'); 
header('Content-Disposition: attachment; filename=file.csv'); 


$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'), 
    array('123', '456', '789'), 
    array('"aaa"', '"bbb"') 
); 

$fp = fopen('file.csv', 'w'); 


// output data 
foreach ($list as $fields) { 
    fputcsv($fp, $fields); 
} 

fclose($fp); 
?> 

使用將最終產生的陣列,但我是新生成的文件,所以我想這樣做第一。

我也嘗試過多種變化,結果相同。到目前爲止,我能想到的唯一的事情是我使用XAMPP,並且其中的fputcsv函數存在一些問題,但我還沒有發現任何其他人有這個問題。在我的代碼中是否有錯誤,或者我應該在別處尋找我的問題?

+0

如果你在頂部設置你的標題,它會不會產生一個錯誤? – seanbreeden 2012-02-07 20:37:06

+0

我們可以看到您確切的實際代碼嗎?大概上述不是你正在運行,因爲「創建文件指針...」行將是一個語法錯誤。您是否期望將文件輸出到磁盤或HTTP客戶端?因爲你正在寫一個文件,但是設置頭像就像你期待的那樣輸出。另外,請注意,最好在文件上調用fclose(),儘管在這種情況下實際上並不需要它,因爲您的句柄將在腳本結束時自動關閉。 – 2012-02-07 20:41:07

+0

@ seanbreeden-到目前爲止,我無論做得好還是壞,都沒有任何區別。 – LucenNox 2012-02-07 20:44:17

回答

1

嘗試的例子從manual

$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'), 
    array('123', '456', '789'), 
    array('"aaa"', '"bbb"') 
); 

$fp = fopen('file.csv', 'w'); 

foreach ($list as $fields) { 
    fputcsv($fp, $fields); 
} 

fclose($fp); 
3

fputcsv是爲寫CSV數據到文件
如果您想將其寫入STDOUT(這是回聲數據的結束位置),您必須從磁盤中讀取它,而不是寫入「file.csv」,請寫入php://stdout

無論哪種方式,不要忘記在最後的fclose()。

+0

或者只是使用'STDOUT'常量 – Gordon 2012-02-07 20:39:52

+0

經過一些調整和谷歌的大量幫助後,我設法得到這個工作。謝謝。 – LucenNox 2012-02-08 00:11:16