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