・CSVファイルに書き込みをしたいけど、やり方がわからない・・・。
・連想配列をCSVに書き込むこともできる?
PHPでfputcsvを使うと、CSVファイルに配列を書き込むことができます。ですが、やり方を詳しく知らない人も多いでしょう。
そこでこの記事では、PHPのfputcsvの使い方やCSVファイルに書き込みをする方法について解説していきます!
この記事を読めば、PHPのfputcsvの使い方がわかり、正しくCSVファイルに配列を書き込むことができるでしょう。
PHPでfputcsvの使い方がわからない、CSVファイルに配列を書き込みたいという人は、ぜひ最後までご覧ください。

fputcsvとは?
fputcsvとは、配列として渡されたものをCSVにフォーマットし、指定したファイルに書き込みをする関数です。
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」というファイルを作成しているものとします。
まず、名前と出身地が入った配列「$list」があったとします。
fopen関数で第1引数に「./test.csv」を指定し、第2引数に書き込みのオープンモードである「w」を指定します。
このfopen関数を変数「$fp」に代入しておきましょう。
そして、配列の値を1つずつファイルに書き込むために、foreach文の繰り返し処理で「$list as $value」と指定します。
foreach文の中で、fputcsvを「$fp, $value」と指定し、CSVファイルに配列を書き込みます。
最後にfclose関数でファイルを閉じましょう。
結果を出力すると、次のようになります。
配列の値が、test.csvファイルに書き込まれていますね。
このように、fputcsvでCSVファイルと配列を指定することで、配列の値を1行ずつ書き込むことができます。
なので、使い方を覚えておきましょう。
連想配列の書き込みもできる
fputcsvを使うと、CSVファイルに配列を書き込むことができるとわかりました。
では、連想配列の場合は書き込みできるのでしょうか。
結論から言うと、fputcsvは連想配列でも書き込むことができます。
実際にコードに書いて、どのような結果になるのか見ていきましょう。
まず、上記のように「$fruites」という連想配列があったとします。
fopen関数で第1引数に「./test.csv」を指定し、第2引数に書き込みのオープンモードである「w」を指定します。
そして、配列のキーと値を繰り返し処理で書き込むために、foreach文で「$fruites as $key => $value」と指定しましょう。
foreach文の中は、fputcsvを「$fp, array($key, $value)」と指定し、CSVファイルに配列のキーと値を書き込みます。
最後にfclose関数でファイルを閉じましょう。
結果を出力すると、次のようになります。
連想配列のキーと値が、コンマ区切りでtest.csvファイルに書き込まれていますね。
このことから、fputcsvは連想配列でもCSVファイルに書き込むことができます。
なので、使い方を覚えておきましょう。
連想配列の仕組みについて、詳しく知りたい人は以下をご覧ください。


CSVファイルの読み込みをする方法
ここまでで、fputcsvを使って配列をCSVファイルに書き込みをする方法について解説しました。
では、このCSVファイルに書き込んだものを、今度は読み込んでみましょう。
CSVファイルから読み込みを行うには、fgetcsvを使うことで実装することができます。
fgetcsvは、fopen関数の「r」モードによって読み込まれたファイルのデータ(CSV形式)を配列にして出力する関数です。
実際のコードで使い方を見ていきましょう。
今回読み込むデータは上記の通りです。
名前と出身地をコンマで区切った配列をfgetcsvによって読み込みます。
まず、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の学習に役立つと幸いです。