search
LoginSignup
0

posted at

updated at

【PHP】fgetcsv()関数でCSVを読み取る方法

PHP7技術者認定初級試験に向けて学習中の身です。
備忘録として残します。

1. csvファイルを作成

sample.csv
1,"りんご,バナナ",フルーツ
2,オレンジ,フルーツ

fgetcsvを使えば、こうしたCSVのデータを配列として読み込むことができます。
まずは1行だけ読み込む方法から。
読み込んだ値をvar_dump関数で出力します。

2. newfile.phpファイルを作成

newfile.php
<?php
$fp = fopen("sample.csv", "r");

$data = fgetcsv($fp);
var_dump($data);

fclose($fp);
?>

3. 実行結果(コンソール)

array(3) {
  [0]=>
  string(1) "1"
  [1]=>
  string(19) "りんご,バナナ"
  [2]=>
  string(12) "フルーツ"
}

1行目のデータがカンマ区切りで配列として出力されました。
でも1行目のデータだけ出力できても困ります。
そこで次に全てのCSVデータを読み取って出力する方法を書いていきます。
方法としては、while文でCSVのデータを1行ずつ繰り返し読み取ります。

4. newfile.phpファイルを修正

newfile.php
<?php
$fp = fopen("sample.csv", "r");

# テーブルタグを作成し、テーブルヘッダーで見出しを作る
echo '<table border="1">
      <tr>
      <th>ID</th>
      <th>フルーツ</th>
      </tr>';

# while文でCSVファイルのデータを1つずつ繰り返し読み込む
while($data = fgetcsv($fp)){
    // テーブルセルに配列の値を格納
    echo '<tr>';
    echo '<td>'.$data[0].'</td>';
    echo '<td>'.$data[1].'</td>';
    echo '</tr>';
}

# テーブルの閉じタグ
echo '</table>';

fclose($fp);
?>

ブラウザで表示してみます。

5. ブラウザで表示

スクリーンショット 2022-05-27 15.21.34.png

このように全てのCSVデータを配列として読み取り、テーブルで整えて表示させることができました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0