PHP数组到CSV输出整个html页面

PHP数组到CSV输出整个html页面,php,arrays,csv,Php,Arrays,Csv,我正在尝试使用下面的代码用PHP将数组输出到CSV。但是,它正在将整个HTML页面输出到CSV。我如何编写它,使其只将数组输出到CSV,而不输出页面的代码 我认为问题在于: $f = fopen('php://output', 'w'); 您正在发送头之前的输出 您可以简化为: <?php function array_to_csv_download($array, $filename = "export.csv", $delimiter=";")

我正在尝试使用下面的代码用PHP将数组输出到CSV。但是,它正在将整个HTML页面输出到CSV。我如何编写它,使其只将数组输出到CSV,而不输出页面的代码

我认为问题在于:

$f = fopen('php://output', 'w');

您正在发送头之前的输出

您可以简化为:

<?php
function array_to_csv_download($array, $filename = "export.csv", $delimiter=";") {
    header('Content-Type: application/csv');
    header('Content-Disposition: attachment; filename="'.$filename.'";');
    $f = fopen('php://output', 'w');
    foreach ($array as $line)
        fputcsv($f, $line, $delimiter);
}

@mcook16您的代码在我的机器上运行良好。您正在使用哪个Web服务器?可能您的Web服务器缺少CSV文件的MIME类型配置。除了您显示的代码外,同一脚本中还有其他代码吗?任何其他PHP、任何其他HTML?
内容类型
不必是
text/csv
?@ADyson,是的,有。这里有一个数据库查询和一些数组操作,听起来里面一定有一些HTML输出,就像你提到的一样。如果您的页面包含其他内容,则您需要对其进行安排(例如,使用一些If语句),以便永远不会与CSV数据同时输出。或者将此功能移动到一个单独的脚本中,该脚本纯粹用于生成CSV。此脚本修复了函数之前的HTML,我现在遇到的问题是,下面有一个HTML表单,现在HTML正在添加到CSV中。有没有办法解决这个问题,或者我需要坚持使用只运行此脚本的CSV专用页面?您只需在函数关闭之前退出即可。
<?php
function array_to_csv_download($array, $filename = "export.csv", $delimiter=";") {
    header('Content-Type: application/csv');
    header('Content-Disposition: attachment; filename="'.$filename.'";');
    $f = fopen('php://output', 'w');
    foreach ($array as $line)
        fputcsv($f, $line, $delimiter);
}