[PHP] Output CSV, JSON

在使用 CodeIgniter 撰寫程式的時候,偶爾會需要用到 CSV, JSON 產生數據。當有一個 array() 的資料結構的時候,此時如何產生 CSV 檔案來下載呢?

產生 JSON 的方式比較簡單只需要

$myObj = array();
$myJSON = urldecode(json_encode($myObj));

產生 CSV 則比較複雜一點,因為 CSV 檔案有很多設定需要調整,這邊我們使用 | 作為 column 的 seperator

$fp = fopen('download/file.csv','w');
$firstLineKeys = false;
$output = '';
foreach($jsonDecoded as $line){
    if (empty($firstLineKeys)){
        $firstLineKeys = array_keys($line);
	fputcsv($fp, $firstLineKeys, "|");
	$firstLineKeys = array_flip($firstLineKeys);
    }
    fputcsv($fp, array_values(array_merge($firstLineKeys, $line)), "|");
}
fclose($fp);

預設是用逗號作為分隔座標,使用逗號則不用加入第三個參數,直接輸入如下:

fputcsv($fp, $firstLineKeys);
fputcsv($fp, array_values(array_merge($firstLineKeys, $line)));