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クラス
- SplFileObjectクラスは、ファイルを扱うクラスです。
- 以下はPHPマニュアルのSplFileObjectクラスのリンクです。
http://php.net/manual/ja/class.splfileobject.php
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)