はじめに
Web サイトの機能を強化するために、次のようなシナリオが発生する場合があります。ユーザーがダウンロードできるように、PHP 配列から CSV ファイルにデータをエクスポートする必要があります。ただし、初心者プログラマにとって、このタスクの実行方法を理解するのは難しい場合があります。この記事では、この目標を効果的に達成するための包括的なガイドを提供します。
CSV ファイルの作成
PHP 配列から CSV ファイルを生成するには、組み込みのfputcsv() 関数内:
$f = fopen("tmp.csv", "w"); foreach ($array as $line) { fputcsv($f, $line); }
HTTP の構成ヘッダー
ブラウザで「名前を付けて保存」ダイアログをトリガーするには、適切な HTTP ヘッダーを指定する必要があります:
header('Content-Disposition: attachment; filename="filename.csv"');
両方のプロセスの結合
CSVファイルの作成とHTTPヘッダーの設定を組み合わせることで、以下のような内容を生成できます。 function:
function array_to_csv_download($array, $filename = "export.csv", $delimiter = ";") { // Open file in memory $f = fopen('php://memory', 'w'); // Generate CSV data foreach ($array as $line) { fputcsv($f, $line, $delimiter); } // Set headers header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename="' . $filename . '"'); // Output file fpassthru($f); }
使用法
この関数を使用するには、PHP 配列とファイル名を指定するだけです:
array_to_csv_download(array( array(1, 2, 3, 4), array(1, 2, 3, 4) ), "numbers.csv");
代替方法
パフォーマンスを向上させるために、次の方法を使用できます。 php://memory の代わりに php://output を使用し、シーク操作を排除します:
function array_to_csv_download($array, $filename = "export.csv", $delimiter = ";") { header('Content-Type: application/csv'); header('Content-Disposition: attachment; filename="' . $filename . '"'); // Open output stream $f = fopen('php://output', 'w'); // Generate CSV data foreach ($array as $line) { fputcsv($f, $line, $delimiter); } }
以上がPHP スクリプトから CSV ファイルを作成してダウンロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。