簡體   English   中英

從PHP將多個數組保存到CSV

[英]Save multiple arrays to CSV from PHP

我想將兩個數組從PHP保存為CSV文件。 問題在於此代碼僅適用於第一個呼叫。 例如,在下面給出的示例中,我只能保存array1 ,但不能保存array2 如果我交換array1array2 ,那么將保存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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM