2014-03-28 154 views
0

我正在讀取我的數據庫中的一些數據,並且我想將它轉換爲一個csv來顯示。但是,我不想寫入文件 - 有沒有辦法將數組數據轉換爲csv字符串而不使用臨時文件?如何將CSV數據寫入變量?

回答

0

是的,有。可以使用php://memory,就好像它是文件輸出流一樣,儘管它實際上只寫入內存,而不是寫入文件。

例如,在陣列$data轉換成csv格式$rows

$rows = array(); 
$fd = fopen('php://memory','rw'); 
foreach($data as $datum) { 
    fputcsv($fd, $datum); 
    rewind($fd); 
    $rows[] = trim(fgets($fd)); 
    rewind($fd); 
} 
fclose($fd); 

在這裏你可以看到我打開了內存讀/寫,然後爲每個數據集,我寫的數據爲csv - 然後倒回到內存的開始 - 然後讀取內存的內容。請注意,fputcsv總是以換行符終止行,這就是爲什麼我可以使用fgets讀取行而不必擔心溢出。如果您要存儲包含換行符的數據,則可能需要稍微更改一下,因爲fgets將不起作用,因此您需要執行一些更詳細的檢查/驗證,並且最大大小php:://memory在php.ini中定義。