繁体   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