・CSVファイルに書き込みをしたいけど、やり方がわからない・・・。
・連想配列をCSVに書き込むこともできる?
PHPでfputcsvを使うと、CSVファイルに配列を書き込むことができます。ですが、やり方を詳しく知らない人も多いでしょう。
そこでこの記事では、PHPのfputcsvの使い方やCSVファイルに書き込みをする方法について解説していきます!
この記事を読めば、PHPのfputcsvの使い方がわかり、正しくCSVファイルに配列を書き込むことができるでしょう。
PHPでfputcsvの使い方がわからない、CSVファイルに配列を書き込みたいという人は、ぜひ最後までご覧ください。
fputcsvとは?
fputcsvとは、配列として渡されたものをCSVにフォーマットし、指定したファイルに書き込みをする関数です。
1 |
fputcsv($handle, $fields, $delimiter, $enclosure, $escape_char) |
fputcsvは上記のように、5つのパラメータを指定することができます。
handle | 有効なファイルポインタ(fopenやfsockopenなどで正常に開かれたファイルを指している必要がある) |
fields | 文字列の配列 |
delimiter(任意) | フィールド区切りの文字(1文字)を指定する |
enclosure(任意) | フィールドを囲む文字(1文字)を指定する |
escape_char(任意) | 区切り文字や囲い込み文字などに認識されないためのエスケープ文字を指定する |
fopenによって開かれたファイルを第1引数に指定し、文字列の配列を第2引数に指定することで、CSVファイルに書き込みをすることができます。
delimiterやenclosure、escape_charなどはオプションとして指定することが可能です。
fputcsvの使い方
では、実際にfputcsvの使い方について解説していきます。
使い方をまだ知らない人は、しっかり理解していきましょう。
fputcsvの基本的な使い方
コードの書き方は次の通り。
※あらかじめ「test.csv」というファイルを作成しているものとします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php // 配列 $list = array( array('山田太郎', '東京'), array('山田花子', '大阪'), array('山田次郎', '福岡') ); // test.csvファイルを開く $fp = fopen('./test.csv', 'w'); // foreach文の繰り返し処理で配列の値をファイルに書き込む foreach($list as $value){ fputcsv($fp, $value); } // ファイルを閉じる fclose($fp); ?> |
まず、名前と出身地が入った配列「$list」があったとします。
fopen関数で第1引数に「./test.csv」を指定し、第2引数に書き込みのオープンモードである「w」を指定します。
このfopen関数を変数「$fp」に代入しておきましょう。
そして、配列の値を1つずつファイルに書き込むために、foreach文の繰り返し処理で「$list as $value」と指定します。
foreach文の中で、fputcsvを「$fp, $value」と指定し、CSVファイルに配列を書き込みます。
最後にfclose関数でファイルを閉じましょう。
結果を出力すると、次のようになります。
1 2 3 4 |
//実行結果 山田太郎,東京 山田花子,大阪 山田次郎,福岡 |
配列の値が、test.csvファイルに書き込まれていますね。
このように、fputcsvでCSVファイルと配列を指定することで、配列の値を1行ずつ書き込むことができます。
なので、使い方を覚えておきましょう。
連想配列の書き込みもできる
fputcsvを使うと、CSVファイルに配列を書き込むことができるとわかりました。
では、連想配列の場合は書き込みできるのでしょうか。
結論から言うと、fputcsvは連想配列でも書き込むことができます。
実際にコードに書いて、どのような結果になるのか見ていきましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php // 連想配列 $fruites = array( 1 => 'りんご', 2 => 'バナナ', 3 => 'ぶどう' ); // test.csvファイルを開く $fp = fopen('./test.csv', 'w'); // foreach文の繰り返し処理で連想配列を書き込む foreach($fruites as $key => $value){ fputcsv($fp, array($key, $value)); } // ファイルを閉じる fclose($hp); ?> |
まず、上記のように「$fruites」という連想配列があったとします。
fopen関数で第1引数に「./test.csv」を指定し、第2引数に書き込みのオープンモードである「w」を指定します。
そして、配列のキーと値を繰り返し処理で書き込むために、foreach文で「$fruites as $key => $value」と指定しましょう。
foreach文の中は、fputcsvを「$fp, array($key, $value)」と指定し、CSVファイルに配列のキーと値を書き込みます。
最後にfclose関数でファイルを閉じましょう。
結果を出力すると、次のようになります。
1 2 3 4 |
//実行結果 1,りんご 2,バナナ 3,ぶどう |
連想配列のキーと値が、コンマ区切りでtest.csvファイルに書き込まれていますね。
このことから、fputcsvは連想配列でもCSVファイルに書き込むことができます。
なので、使い方を覚えておきましょう。
連想配列の仕組みについて、詳しく知りたい人は以下をご覧ください。
PHPの連想配列(Key-Value Array)の基礎をおさえようCSVファイルの読み込みをする方法
ここまでで、fputcsvを使って配列をCSVファイルに書き込みをする方法について解説しました。
では、このCSVファイルに書き込んだものを、今度は読み込んでみましょう。
CSVファイルから読み込みを行うには、fgetcsvを使うことで実装することができます。
fgetcsvは、fopen関数の「r」モードによって読み込まれたファイルのデータ(CSV形式)を配列にして出力する関数です。
実際のコードで使い方を見ていきましょう。
1 2 3 4 |
//test.csv 山田太郎,東京 山田花子,大阪 山田次郎,福岡 |
今回読み込むデータは上記の通りです。
名前と出身地をコンマで区切った配列をfgetcsvによって読み込みます。
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php // test.csvファイルを開く $fp = fopen('./test.csv', 'r'); // ファイルの中の行を1行ずつ読み込む while($line = fgetcsv($fp)){ var_dump($line); } // ファイルを閉じる fclose($fp); ?> |
まず、fopen関数で第1引数にCSVファイル「./test.csv」を指定し、オープンモードを読み込みの「r」に指定します。
このfopen関数を変数「$fp」に代入しておきましょう。
そして、ファイルの中にあるデータを1行ずつ出力したいので、while文に「$line = fgetcsv($fp)」と指定します。
while文の中には、var_dumpで$lineを指定しましょう。
最後にfclose関数でファイルを閉じます。
結果を表示すると、次のようになるでしょう。
CSVファイルの中身が配列として読み込まれましたね。
このように、fgetcsvを使えば、CSVに書き込みをしたデータを読み込むことができます。
fputcsvとセットで使い方を覚えて、CSV形式のファイル操作をできるようになるといいでしょう。
まとめ
今回は、PHPのfputcsvの使い方やCSVファイルに配列を書き込む方法について解説しました。
fputcsvは、配列をCSVファイルに書き込むことができる関数です。
fopen関数やfclose関数とセットで使うことで、開いたCSVファイルに書き込みをすることができます。
また、連想配列を書き込むこともできるので、今回解説したやり方を覚えておくといいでしょう。
この記事がPHPの学習に役立つと幸いです。