1

PHPからCSVファイルとして保存したい配列が2つあります。問題は、このコードが最初の呼び出しに対してのみ機能することです。たとえば、以下の例では、保存することはできますがarray1array2保存されません。との場所を入れ替えるarray1array2array2の代わりに保存されます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);
}
4

2 に答える 2

0

私の知る限り、ヘッダーを設定できるのは1回だけで、その後コンテンツを返すことができます。上記のコードは、いくつかのヘッダーを設定し、CSVで応答してから、ヘッダーを再度設定し、別のCSVで再度応答します。PHP/ブラウザは個別のリターンを処理しません。

サーバーから複数マイルをプッシュする代わりに、ブラウザーwindow.open()/path-to-get-csv-script.php?op=file1を実行してからop=file2を実行することもできます。必要に応じて、ブラウザは両方のファイルを開くことができます。

于 2012-05-30T16:48:44.837 に答える
0

ヘッダーを2回設定します。

csvデータ出力を作成してみて、完了したらヘッダーを1回設定します。

また、別の関数内に関数宣言がありますが、これは間違いなく無効です。

__outputCSVを他の場所に移動しますか、それともクロージャーにするつもりでしたか?

于 2012-05-30T16:50:36.277 に答える