Home >Backend Development >PHP Tutorial >How to Create and Download CSV Files from PHP Scripts?
Introduction
To enhance website functionality, you may encounter scenarios where you need to export data from your PHP arrays into CSV files for download by users. However, as a novice programmer, understanding how to execute this task can be challenging. This article offers a comprehensive guide to achieve this goal effectively.
Creating the CSV File
To generate the CSV file from your PHP array, you can utilize the built-in fputcsv() function:
$f = fopen("tmp.csv", "w"); foreach ($array as $line) { fputcsv($f, $line); }
Configuring HTTP Headers
To trigger the "Save as" dialogue in browsers, you need to specify the appropriate HTTP headers:
header('Content-Disposition: attachment; filename="filename.csv"');
Combining Both Processes
By combining the CSV file creation and HTTP header configuration, you can generate the following function:
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); }
Usage
To use this function, you can simply provide your PHP array and a filename:
array_to_csv_download(array( array(1, 2, 3, 4), array(1, 2, 3, 4) ), "numbers.csv");
Alternative Method
For improved performance, you can use php://output instead of php://memory and eliminate the seek operation:
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); } }
The above is the detailed content of How to Create and Download CSV Files from PHP Scripts?. For more information, please follow other related articles on the PHP Chinese website!