富国沪深
您可以为数组使用内置的fputcsv()从数组中生成正确的csv行,因此您必须循环并收集行。喜欢:$f = fopen("tmp.csv", "w");foreach ($array as $line) { fputcsv($f, $line)}为了使浏览器提供“另存为”对话框,您必须像这样发送HTTP标头(有关更多信息,请参见rfc):header('Content-Disposition: attachment; filename="filename.csv";');放在一起:function array_to_csv_download($array, $filename = "export.csv", $delimiter=";") { // open raw memory as file so no temp files needed, you might run out of memory though $f = fopen('php://memory', 'w'); // loop over the input array foreach ($array as $line) { // generate csv lines from the inner arrays fputcsv($f, $line, $delimiter); } // reset the file pointer to the start of the file fseek($f, 0); // tell the browser it's going to be a csv file header('Content-Type: application/csv'); // tell the browser we want to save it instead of displaying it header('Content-Disposition: attachment; filename="'.$filename.'";'); // make php send the generated csv lines to the browser fpassthru($f);}您可以像这样使用它:array_to_csv_download(array( array(1,2,3,4), // this array is going to be the first row array(1,2,3,4)), // this array is going to be the second row "numbers.csv");更新:代替,php://memory您还可以将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 "output" stream // see http://www.php.net/manual/en/wrappers.php.php#refsect2-wrappers.php-unknown-unknown-unknown-descriptioq $f = fopen('php://output', 'w'); foreach ($array as $line) { fputcsv($f, $line, $delimiter); }}