簡介
為了增強網站功能,您可能會遇到這樣的情況:需要將PHP 數組中的資料匯出到CSV 檔案中以供使用者下載。然而,作為新手程式設計師,理解如何執行此任務可能具有挑戰性。本文提供了有效實現此目標的全面指南。
建立CSV 檔案
要從PHP 陣列產生CSV 文件,您可以使用內建的在fputcsv() 函數中:
$f = fopen("tmp.csv", "w"); foreach ($array as $line) { fputcsv($f, $line); }
配置HTTP標頭
要在瀏覽器中觸發「另存為」對話框,您需要指定適當的HTTP 標頭:
header('Content-Disposition: attachment; filename="filename.csv"');
組合兩個進程
透過結合CSV 檔案建立和HTTP標頭配置,可以產生以下內容函數:
function array_to_csv_download($array, $filename = "export.csv", $delimiter = ";") { // Open file in memory $f = fopen('php://memory', 'w'); // Generate CSV data foreach ($array as $line) { fputcsv($f, $line, $delimiter); } // Set headers header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename="' . $filename . '"'); // Output file fpassthru($f); }
用法
要使用此函數,您只需提供PHP 陣列和檔案名稱:
array_to_csv_download(array( array(1, 2, 3, 4), array(1, 2, 3, 4) ), "numbers.csv");
替代方法
為了提高效能,您可以使用php://output 而不是 php://memory 並消除了查找操作:
function array_to_csv_download($array, $filename = "export.csv", $delimiter = ";") { header('Content-Type: application/csv'); header('Content-Disposition: attachment; filename="' . $filename . '"'); // Open output stream $f = fopen('php://output', 'w'); // Generate CSV data foreach ($array as $line) { fputcsv($f, $line, $delimiter); } }
以上是如何從 PHP 腳本建立和下載 CSV 檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!