如何以程式設計方式從 PHP 陣列下載 CSV 檔案?

DDD
發布: 2024-11-10 13:33:02
原創
849 人瀏覽過

How to Programmatically Download CSV Files from a PHP Array?

如何從PHP 腳本建立和下載CSV 檔案

概述

本文旨在提供用於建立和下載CSV 檔案的全面解決方案PHP數組中的CSV(逗號分隔值)檔案。作為新手程式設計師,您可能需要幫助來實現此功能。

產生CSV 行

要從PHP 陣列產生CSV 行,您可以使用內建的fputcsv() 函數,該函數將陣列轉換為適合CSV 的格式化字串:

$f = fopen("tmp.csv", "w");
foreach ($array as $line) {
    fputcsv($f, $line);
}
登入後複製

HTTP 標頭下載

要從瀏覽器啟動文件下載,發送適當的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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!