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行のデータを書き込みます。