简介
为了增强网站功能,您可能会遇到这样的情况:需要将 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中文网其他相关文章!