ホームページ >バックエンド開発 >PHPチュートリアル >PHP 配列を CSV に変換するときに、単一行出力とファイルのダウンロードを処理するにはどうすればよいですか?
コードは製品の配列を CSV ファイルに変換することを目的としていますが、出力が 1 行になるという問題が発生しています。適切なダウンロード ヘッダーがありません。
単一行出力の根本原因は、CSV コンテンツを構築するネストされたループにあります。 CSV を手動で構築する代わりに、 fputcsv() 関数を使用してプロセスを合理化することを検討してください。これにより、プロセスが簡素化され、適切なフォーマットが保証されます。
ファイルのダウンロードをトリガーするには、適切な HTTP ヘッダーを設定する必要があります。その方法は次のとおりです。
<code class="php">header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=your_desired_name.csv");</code>
ただし、提供されたコードは CSV ファイルを出力ストリームに直接書き込むため、クライアント側の処理に使用する JavaScript ライブラリにアクセスできなくなります。
fputcsv() を使用してこれらの問題に対処する代替アプローチを次に示します。
<code class="php">$sql = "SELECT id, name, description FROM products"; if($result = $mysqli->query($sql)) { $output = fopen("php://output",'w') or die("Can't open php://output"); header("Content-Type:application/csv"); header("Content-Disposition:attachment;filename=pressurecsv.csv"); fputcsv($output, array('id','name','description')); while($p = $result->fetch_array()) { fputcsv($output, $p); } fclose($output) or die("Can't close php://output"); }</code>
このコードは CSV ファイルを作成し、それを出力バッファーにストリーミングします。 fputcsv() 関数は、値のフォーマットとエスケープを自動的に処理します。最後の行は出力ストリームを閉じ、リソースを解放します。
以上がPHP 配列を CSV に変換するときに、単一行出力とファイルのダウンロードを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。