PHP:
CSVとの作業
どうやって:
PHPはCSVファイルの取り扱いに対する組み込み関数を提供しており、サードパーティのライブラリを必要とせずにこれらのファイルから読み取り、書き込みを行うことを簡単にします。こちらは始めるための例です:
CSVファイルの読み取り
fopen()
とfgetcsv()
を組み合わせてCSVファイルを開き、その内容を読み取ることができます:
<?php
$filename = 'data.csv';
$handle = fopen($filename, "r");
if ($handle !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "行のフィールド数: $num\n";
for ($c = 0; $c < $num; $c++) {
echo $data[$c] . "\n";
}
}
fclose($handle);
}
?>
このスクリプトは、各行のフィールド数とそのフィールド内容を表示します。
CSVファイルへの書き込み
CSVファイルに書き込むために、書き込みモード(w
)でfopen()
とfputcsv()
を使用します:
<?php
$list = [
['ID', '名前', 'メール'],
[1, 'John Doe', '[email protected]'],
[2, 'Jane Doe', '[email protected]']
];
$handle = fopen('users.csv', 'w');
foreach ($list as $row) {
fputcsv($handle, $row);
}
fclose($handle);
?>
このスクリプトはusers.csv
というファイルを作成し、ヘッダーと2行のデータを書き込みます。
ライブラリを利用する:League\Csv
より高度なCSVの取り扱いには、League\Csv
ライブラリが強力な機能セットを提供します。Composer(composer require league/csv
)を介してインストールした後、より柔軟にCSVデータを読み書きするために使用できます。
League\Csvでの読み取り
<?php
require 'vendor/autoload.php';
use League\Csv\Reader;
$csv = Reader::createFromPath('data.csv', 'r');
$csv->setHeaderOffset(0); // 最初の行をヘッダーとして使いたい場合に設定
$results = $csv->getRecords();
foreach ($results as $row) {
print_r($row);
}
?>
このスクリプトは、最初の行を列のヘッダーとして扱い、data.csv
を読み取り、各行を連想配列として出力します。
League\Csvでの書き込み
<?php
require 'vendor/autoload.php';
use League\Csv\Writer;
$csv = Writer::createFromPath('users_new.csv', 'w+');
$csv->insertOne(['ID', '名前', 'メール']);
$csv->insertAll([
[3, 'Alex Doe', '[email protected]'],
[4, 'Anna Smith', '[email protected]']
]);
echo "users_new.csvに正常に書き込みました。";
?>
これは、users_new.csv
を作成し、ヘッダー行の後に2行のデータを書き込みます。