將陣列資料匯出為 CSV 是常見報表功能。PHP 的 fputcsv() 會自動處理欄位包含逗號、引號、換行的跳脫,是產生標準 CSV 的最佳工具。本文示範完整匯出流程。
<?php
// 範例資料:多維陣列,每子陣列為一列
$sales = [
['east', '2005-01-01', '2005-02-01', 12.54],
['west', '2005-01-01', '2005-02-01', 546.33],
['south', '2005-01-01', '2005-02-01', 93.26],
['north', '2005-01-01', '2005-02-01', 945.21],
['All Regions', '--', '--', 1597.34],
];
$filename = 'sales_report.csv';
$handle = fopen($filename, 'w');
if (!$handle) {
die("無法建立檔案: $filename");
}
// 選寫:寫入標題列
fputcsv($handle, ['Region', 'Start Date', 'End Date', 'Amount']);
foreach ($sales as $row) {
if (fputcsv($handle, $row) === false) {
die("CSV 寫入失敗");
}
}
fclose($handle);
echo "匯出完成:$filename";
?>
<?php
header('Content-Type: text/csv; charset=UTF-8');
header('Content-Disposition: attachment; filename="sales_report.csv"');
header('Pragma: no-cache');
header('Expires: 0');
$out = fopen('php://output', 'w');
// 為了 Excel 正確識別 UTF-8,加入 BOM
fprintf($out, chr(0xEF).chr(0xBB).chr(0xBF));
fputcsv($out, ['Region', 'Start Date', 'End Date', 'Amount']);
foreach ($sales as $row) {
fputcsv($out, $row);
}
fclose($out);
exit;
?>
"" 表示。EF BB BF),否則中文會亂碼。<?php
// 使用分號分隔(歐洲常見),單引號包裹
fputcsv($handle, $row, ';', "'");
?>
fputcsv() 配合 php://output 是 PHP 匯出 CSV 的標準最佳實務,自動處理跳脫、支援串流輸出、記憶體友善。希望本文對您的 PHP 程式設計有所幫助。