開発プロセス中に、CSVファイルはデータのエクスポートとデータ交換によく使用されます。 PHPは、ArrayフォーマットされたデータをCSVファイルに書き込むために、非常に便利な組み込み関数fputcsv()を提供します。この記事では、 FPUTCSV()関数を使用して標準のCSVファイルに配列を正しく書き込む方法について詳しく説明します。
FPUTCSV()は、PHPによって提供される関数です。その機能は、Array形式のデータをCSV形式のオープンファイルリソースに書き込むことです。この関数は、手動のスプライシングによって引き起こされるエラーを回避するために、必要な区切り文字、引用符、ラインブレイク、その他の問題を自動的に扱います。
関数プロトタイプは次のとおりです。
fputcsv(resource $stream, array $fields, string $separator = ",", string $enclosure = "\"", string $escape = "\\"): int|false
パラメーター説明:
$ stream :ファイルハンドル、 fopen()で開かれたリソース。
$フィールド:記述する1次元配列、各要素はCSVファイルの列を表します。
$セパレーター:フィールド間のセパレーターは、デフォルトでコンマ( 、 )になります。
$エンクロージャー:フィールド値の囲まれた文字。これは二重引用符( " )にあります。
$ ESCAPE :エスケープキャラクター、デフォルトはBackSlash( \ )です。
CSVファイルに書き込みたいユーザーデータのセットがあるとします。
$data = [
['ユーザー名', '郵便', '登録時間'],
['チャン・サン', 'zhangsan@m66.net', '2025-06-10 10:00:00'],
['li si', 'lisi@m66.net', '2025-06-10 11:20:00'],
['王ウー', 'wangwu@m66.net', '2025-06-10 12:35:00']
];
上記のデータをusers.csvという名前のファイルに書き込みたい:
<?php
// 書く CSV ファイルパス
$filename = 'users.csv';
// 書き込みモードでファイルを開きます(ファイルが存在しない場合、自動的に作成されます)
$fp = fopen($filename, 'w');
if ($fp === false) {
die("ファイルを開くことができません: $filename");
}
// 書く数据
$data = [
['ユーザー名', '郵便', '登録時間'],
['チャン・サン', 'zhangsan@m66.net', '2025-06-10 10:00:00'],
['li si', 'lisi@m66.net', '2025-06-10 11:20:00'],
['王ウー', 'wangwu@m66.net', '2025-06-10 12:35:00']
];
// データのすべての行をループし、ファイルに書き込みます
foreach ($data as $row) {
fputcsv($fp, $row);
}
// ファイルハンドルを閉じます
fclose($fp);
echo "CSV ファイルの書き込みが完了しました。\n";
ファイルをサーバーに保存したくないが、ユーザーにCSVファイルを直接ダウンロードできる場合は、次の方法を使用できます。
<?php
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="users.csv"');
$fp = fopen('php://output', 'w');
$data = [
['ユーザー名', '郵便', '登録時間'],
['チャン・サン', 'zhangsan@m66.net', '2025-06-10 10:00:00'],
['li si', 'lisi@m66.net', '2025-06-10 11:20:00'],
['王ウー', 'wangwu@m66.net', '2025-06-10 12:35:00']
];
foreach ($data as $row) {
fputcsv($fp, $row);
}
fclose($fp);
このコードを含むPHPファイルにアクセスすることにより、ブラウザはusers.csvという名前のファイルをダウンロードするように求められ、コンテンツは準備されたデータです。
文字エンコードの問題:デフォルトの出力はUTF-8です。 Excelで開くときにCarled Codeが表示される場合、出力の前にUTF-8 BOMヘッダーを追加できます。
echo "\xEF\xBB\xBF"; // に追加 BOM
配列は一次元である必要があります: fputcsv()は1次元配列のみを受け入れ、多次元配列を渡す場合は、行ごとに処理する必要があります。
ファイル許可の問題:PHPスクリプトが指定されたディレクトリに書き込む許可があることを確認してください。
PHPのFPUTCSV()関数を使用すると、ローカルファイルに書き込まれるか、ブラウザを介して直接ダウンロードされているかどうかにかかわらず、ArrayフォーマットデータをCSVファイルに簡単に書き込むことができます。データを準備し、ファイル操作機能を正しく使用して、効率的で標準化されたデータエクスポート機能を実現します。