CSVファイルを扱う – fgetcsv, fputcsv

構造化されたデータをファイルに保存する方法はいくつかありますが、CSV形式なら Excel等のスプレッドシートでも扱いやすくて便利です。

PHPで CSVを扱うには、SplFileObjectの CSV関連メソッドを利用します。まずは、次のような配列を準備しましょう。

<?php
$items = [
  ['PHP入門', 1500],
  ['JS入門', 2300],
  ['Python入門', 2000]
];

これを、CSV形式でファイルに出力するなら fputcsv()メソッドを利用します。書き込みモードでファイルを作成しましょう。

$file = new SplFileObject('data.csv', 'w');
$file->fputcsv($items);

これで、PHPファイルと同じ場所に「data.csv」ファイルができあがり、CSV形式でデータが書き出されます。

CSVデータを読み込む

CSVのデータファイルを読み込むには、fgetcsv()メソッドを利用します。これで、自動的に要素が配列になって取り出されます。

$file = new SplFileObject('data.csv', 'r');
$item = $file->fgetcsv();
echo $item[0]; // PHP入門

フラグで変更する

もう1つの方法として setFlagsメソッドを使って読み込みの方法を CSVに変える方法もあります。ファイルを開いた後で次のように変更しましょう。

$file->setFlags(SplFileObject::READ_CSV);

すると、次のように foreach構文で次々の取り出すことができます。

foreach ($file as $line) {
  echo $line[0], "\\n";
}

ともすたチャンネルに
チャンネル登録する