PHP CSVファイルの読み込みと書き込み

PHPのCSVファイルの読み込みと書き込みのサンプルです。

確認環境
・PHP 7
・Windows 10

目次

サンプル 読み込むCSV
  CSVを読み込む(fgetcsv)
  CSVを読み込む(SplFileObject)
  CSVを書き込む(fputcsv)

読み込むCSV

CSVの文字コードはUTF-8です。

1,"赤","red"
2,"黄","yellow"
3,"青","blue"

1つめの項目は、数値でダブルコーテーションで囲まれていません。
2つめと3つめの項目は、ダブルコーテーションで囲まれています。

CSVを読み込む(fgetcsv)

<?php
$path = "D:\\test1\\test1.csv";

if (file_exists($path)) {
  readCsv($path);
} else {
  print("ファイルがありません");
}

function readCsv($path)
{
  $file1 = fopen($path, "r");

  while (($line = fgetcsv($file1, 1000, ","))) {
    $csv1[] = $line;
  }
  fclose($file1);

  print($csv1[0][0]); //1
  print($csv1[0][1]); //赤
  print($csv1[0][2]); //red
  print($csv1[1][0]); //2
  print($csv1[1][1]); //黄
  print($csv1[1][2]); //yellow
}

2行目は、読み込むcsvファイルです。(D:¥test1¥test1.csv)
4行目は、ファイルの存在チェックをしています。
12行目は、fopenでファイルを開いています。rはreadです。
14行目は、fgetcsvでcsvファイルを1行ずつ取得しています。
2つめの引数は最大の行の長さで3つめの引数は区切り文字です。
両方とも省略可能です。
17行目は、開いたファイルを閉じています。

 

CSVを読み込む(SplFileObject)

SplFileObjectでCSVを読み込むサンプルです。

<?php

$path = "D:\\test1\\test1.csv";

$file1  = new SplFileObject($path);

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

foreach ($file1  as $line) {
	$csv1[] = $line;
}
print($csv1[0][0]); //1
print($csv1[0][1]); //赤
print($csv1[0][2]); //red
print($csv1[1][0]); //2
print($csv1[1][1]); //黄
print($csv1[1][2]); //yellow

2行目は、読み込むファイルを指定しています。(D:¥test1¥test1.csv)
4行目は、SplFileObjectを使用しています。
6行目は、定義済み定数のREAD_CSVを指定しています。
→CSVの列として行を読み込みます。

SplFileObjectクラス

CSVを書き込む(fputcsv)

fputcsvでCSVを書き込むサンプルです。

<?php
$arr = array(
	array(1, "赤", "red"),
	array(2, "黄", "yellow"),
	array(3, "青", "blue")
);
$path = "D:\\test1\\test2.csv";

$file1 = fopen($path, "w");

foreach ($arr as $line) {
	fputcsv($file1, $line);
}

fclose($file1);

2~6行目は、書き込むCSVの値を指定しています。
7行目は、書き込み先のファイルです。存在しないときは新規作成されます。
9行目は、fopenでファイルを開いています。wはwriteです。
12行目は、fputcsvでcsvファイルを1行ずつ書き込んでいます。
15行目は、開いたファイルを閉じています。

関連の記事

PHP フォルダ/ファイルの一覧を取得(glob)
PHP includeとrequireの違い(ファイルを読み込む)
PHP ファイルをアップロードする(formでsubmit)
PHP ファイルの読み込みと書き込み(fgets/fwrite)

△上に戻る