[英]Save multiple arrays to CSV from PHP
我想将两个数组从PHP保存为CSV文件。 问题在于此代码仅适用于第一个呼叫。 例如,在下面给出的示例中,我只能保存array1
,但不能保存array2
。 如果我交换array1
和array2
,那么将保存array2
而不是array1
。 我的代码中实际上有什么问题,如何解决这个问题?
header("Content-type: text/csv");
header("Pragma: no-cache");
$headers = array('xxx','yyy','zzz');
saveCSV($array1,"file1.csv",$headers);
header("Content-type: text/csv");
header("Pragma: no-cache");
$headers = array('aaa','bbb','ccc');
saveCSV($array2,"file2.csv",$headers);
function saveCSV($data,$fileName,$headers) {
$outstream = fopen($fileName, "a");
file_put_contents($fileName, "");
if ($headers != 0)
fputcsv($outstream,$headers);
function __outputCSV(&$vals, $key, $filehandler) {
fputcsv($filehandler, $vals);
}
array_walk($data, "__outputCSV", $outstream);
fclose($outstream);
}
据我所知,您只能设置标头一次,然后返回内容。 上面的代码设置了一些标头,以CSV答复,然后再次设置标头,并再次以不同的CSV答复。 PHP /浏览器不会处理单独的返回。
与其将服务器推开数英里,不如让您拥有浏览器window.open()/path-to-get-csv-script.php?op=file1然后op = file2。 然后,如果需要的话,浏览器可以打开两个文件。
您设置标题两次。
尝试建立您的csv数据输出,然后在完成后一次设置标头。
另外您在另一个函数声明中,我确定这是无效的。
将__outputCSV移到其他位置,或者您打算将其作为闭包?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.