本文旨在提供用於建立和下載CSV 檔案的全面解決方案PHP數組中的CSV(逗號分隔值)檔案。作為新手程式設計師,您可能需要幫助來實現此功能。
要從PHP 陣列產生CSV 行,您可以使用內建的fputcsv() 函數,該函數將陣列轉換為適合CSV 的格式化字串:
$f = fopen("tmp.csv", "w"); foreach ($array as $line) { fputcsv($f, $line); }
要從瀏覽器啟動文件下載,發送適當的HTTP 標頭至關重要。其中一個標頭是:
header('Content-Disposition: attachment; filename="filename.csv";');
此標頭通知瀏覽器回應包含具有指定檔案名稱的檔案附件。
組合 CSV行產生和 HTTP 標頭,您可以建立一個用於下載 CSV的函數:
function array_to_csv_download($array, $filename = "export.csv", $delimiter = ";") { // Open a memory file for efficient handling without temporary files. $f = fopen('php://memory', 'w'); // Generate CSV lines and write them to the memory file. foreach ($array as $line) { fputcsv($f, $line, $delimiter); } // Reset the file pointer to begin sending the file. fseek($f, 0); // Set CSV-related HTTP headers. header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename="'. $filename . '";'); // Output the generated CSV lines to the browser for download. fpassthru($f); }
要使用此函數,只需傳遞您的陣列和所需的檔案名稱:
array_to_csv_download(array( array(1, 2, 3, 4), // First row array(1, 2, 3, 4) // Second row ), "numbers.csv");
作為寫入記憶體檔案的替代方法,您可以也使用php://output作為文件描述符,消除了文件查找的需要:
function array_to_csv_download($array, $filename = "export.csv", $delimiter = ";") { header('Content-Type: application/csv'); header('Content-Disposition: attachment; filename="'. $filename . '";'); // Open the php://output stream for direct output. $f = fopen('php://output', 'w'); foreach ($array as $line) { fputcsv($f, $line, $delimiter); } }
以上是如何以程式設計方式從 PHP 陣列下載 CSV 檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!