この記事は、CSV ファイルを作成およびダウンロードするための包括的なソリューションを提供することを目的としています。 PHP 配列からの CSV (カンマ区切り値) ファイル。初心者プログラマは、この機能の実装に支援が必要な場合があります。
PHP 配列から CSV 行を生成するには、組み込みの fputcsv() 関数を利用できます。配列を CSV に適した形式の文字列に変換します:
$f = fopen("tmp.csv", "w"); foreach ($array as $line) { fputcsv($f, $line); }
ブラウザからファイルのダウンロードを開始するには、適切な HTTP ヘッダーを送信することが重要です。そのようなヘッダーの 1 つは次のとおりです。
header('Content-Disposition: attachment; filename="filename.csv";');
このヘッダーは、応答に指定されたファイル名の添付ファイルが含まれていることをブラウザーに通知します。
CSV を結合する行生成と HTTP ヘッダーを使用して、CSV をダウンロードする関数を作成できます:
function array_to_csv_download($array, $filename = "export.csv", $delimiter = ";") { // Open a memory file for efficient handling without temporary files. $f = fopen('php://memory', 'w'); // Generate CSV lines and write them to the memory file. foreach ($array as $line) { fputcsv($f, $line, $delimiter); } // Reset the file pointer to begin sending the file. fseek($f, 0); // Set CSV-related HTTP headers. header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename="'. $filename . '";'); // Output the generated CSV lines to the browser for download. fpassthru($f); }
この関数を使用するには、配列と目的のファイル名を渡すだけです:
array_to_csv_download(array( array(1, 2, 3, 4), // First row array(1, 2, 3, 4) // Second row ), "numbers.csv");
メモリ ファイルに書き込む代わりに、ファイル記述子として php://output を使用することもでき、ファイル シークの必要がなくなります。
function array_to_csv_download($array, $filename = "export.csv", $delimiter = ";") { header('Content-Type: application/csv'); header('Content-Disposition: attachment; filename="'. $filename . '";'); // Open the php://output stream for direct output. $f = fopen('php://output', 'w'); foreach ($array as $line) { fputcsv($f, $line, $delimiter); } }
以上がPHP 配列から CSV ファイルをプログラムでダウンロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。