[英]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.