function outputCSV($data) {
$outstream = fopen("php://output", 'w');
function __outputCSV(&$vals, $key, $filehandler){
fputcsv($filehandler, $vals, ',', '"');
}
array_walk($data, '__outputCSV', $outstream);
fclose($outstream);
}
function someFunctionInTheBigPHPFile() {
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");
$mydata = array(
array('data11', 'data12', 'data13'),
array('data21', 'data22', 'data23'),
array('data31', 'data32', 'data23'));
outputCSV($mydata);
exit;
}
出力CSVにはデータ配列が含まれています。問題は、この配列がWebページの残りの部分と一緒に表示されることです。つまり、この2つの関数が、fopenとファイルへの書き込みを処理する唯一の関数であるにもかかわらず、この関数が呼び出される前のすべてとその後のすべてです。
Webページの残りの部分が干渉するのを防ぐにはどうすればよいですか?CSVのデータ配列のみが必要です。
編集:exitを追加することで、配列に続くすべてのものを切り落とすことができましたが、配列の前にWebサイト全体が表示されるという問題があります。