支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • PHPを使ったCSVファイルの読み込

はじめに

アプリケーションなどを作成していると、データを読み込んだり、書き込んだりしてファイルとして操作したいと思うことがあるでしょう。この記事では、様々なソフトウェアと互換性のあるCSVファイルを使い、PHPでファイルの読み込みを行う方法について、初心者にもわかりやすいように解説していきます。また、CSVファイルについての説明やCSVファイルのデータを配列にして受け取る方法なども解説していきます。

CSVファイルとは

CSVファイルとは、「Comma Separater Values」の略で、その名の通り項目や値をカンマ(,)で区切って書かれたテキストデータのことを言い、ファイルの拡張子は、「.csv」となります。CSVファイルの特徴としては、「余計な情報が入っていない分、データの容量が軽いこと」や「様々なソフトで開くことができる」ことです。CSVファイルは互換性が高く、Excelやメモ帳、メールソフト、データベースなどほとんどのソフトで読み込み使用することができます。なので、Excelやデータベース間でのファイルのやり取りや相手がExcelを持っているか不明な場合、ファイルの容量を軽くしたい場合などにCSVファイルを使うと良いでしょう。

PHPでのCSVファイル読み込み方法

CSVファイルとは何かなんとなくでも理解できたでしょうか。ここでは、PHPでのCSVファイルの読み込み方法について、解説していきます。

CSVファイルの読み込みで使う関数

まずは、CSVファイルの読み込みで使う関数について説明していきます。 CSVファイルの読み込みに使う関数は以下の2つです。

  • fopen()関数
  • fclose()関数

fopen関数は、ファイルを開く関数で、第一引数には開きたいファイルのパスを第二引数には読み込みモードで開くか、書き込みモードで開くかを指定します。fclose()関数はファイルを閉じる関数で、引数には閉じたいファイルのパスを指定します。ファイルを扱うときに絶対に忘れてはならないのが、ファイルを開いたら必ず閉じるということです。この作業を忘れると、ファイルのデータが壊れてしまったり、システムの不具合に繋がったりします。これは、PHPに限らずどのプログラミング言語でも言えることです。ファイルは開いたら必ず閉じると頭に入れておきましょう。

コードの書き方

ファイル操作に関する関数が分かったところで、コードの書き方を説明していきます。

<?php>
$file = fopen("./sample.csv", "r");
fclose($file);
?>

上記のコードをわかりやすく説明すると、fopen()関数の引数に「ファイル名」と「r」を指定しています。この「r」で読み込みモードを指定しています。ちなみに書き込みモードを指定したいときは、「"w"」を指定します。そして、引数に「./sample.csv」と「"r"」を指定したfopen()関数を$file変数に代入します。そして、$file変数をfclose()の引数に渡しています。PHPでCSVファイルを読み込むのは、たったこれだけです。ファイルの読み書きと聞くと難しい印象を持ってしまうかもしれませんが、意外と簡単なのです。

CSVファイルを配列で出力する関数

CSVファイルを配列にして出力する関数は、「fgetcsv()関数」を使用します。 まとまったデータは配列を使った方が処理を書くのが楽です。以下のコードはfgetcsv()関数で配列にして受け取ったCSVファイルのデータをwhile()文でループを回し、HTMLに出力しています。

<?php
// #1 ファイルの読み込み
$f = fopen("./sample.csv", "r");

// #2 テーブルのHTMLを生成
echo "<table>
        <tr>
            <th>ID</th>
            <th>名前</th>
            <th>身長</th>
            <th>体重</th>
        </tr>";

// #3 csvのデータを配列に変換し、HTMLに埋め込む
while($line = fgetcsv($f)) {
    echo "<tr>";
    for ($i=0;$i<count($line);$i++) {
        echo "<td>" . $line[$i] . "</td>";
    }
    echo "</tr>";
}
echo "</table>";

// #4 ファイルを閉じる
fclose($f);
?>

まとめ

いかがでしたでしょうか。ファイルをCSVファイルとして読み書きができるようになることによって、顧客名簿や商品情報を印刷できたり、Excelで操作できたりするのでとても便利です。 是非、この記事を参考にCSVファイルの操作を行って見てください。