【PHP】CSVを読み込む基本的な方法

CSVファイルをPHPで扱うことは、データのインポートやエクスポートなど多くの場面で役立ちます。この記事では、PHPでCSVファイルを読み込むいくつかの方法を紹介します。

fgetcsv() 関数を使ってCSVファイルを読み込む

fgetcsv() 関数は、CSVファイルを1行ずつ読み込むための標準的な方法です。この関数を使用すると、各行を配列として取得できます。

<?php
$file = fopen('example.csv', 'r'); // ファイルを読み込みモードで開く

while (($data = fgetcsv($file)) !== FALSE) {
    print_r($data); // CSVの1行を配列として表示
}

fclose($file); // ファイルを閉じる
?>

CSVファイル全体を一度に配列として読み込む

CSVファイル全体を一度に配列として読み込む場合、file() 関数と array_map() 関数を組み合わせる方法があります。この方法は、ファイルの各行を配列として扱い、全体を一度に処理したい場合に適しています。

<?php
$rows = array_map('str_getcsv', file('example.csv'));

foreach ($rows as $row) {
    print_r($row);
}
?>

このアプローチでは、全行をまとめて処理するため、大きなCSVファイルを扱う際はメモリの使用量に注意が必要です。

CSVファイル全体を一度に配列として読み込む

CSVファイル全体を一度に配列として読み込む場合、file() 関数と array_map() 関数を組み合わせる方法があります。この方法は、ファイルの各行を配列として扱い、全体を一度に処理したい場合に適しています。

<?php
$rows = array_map('str_getcsv', file('example.csv'));

foreach ($rows as $row) {
    print_r($row);
}
?>

このアプローチでは、全行をまとめて処理するため、大きなCSVファイルを扱う際はメモリの使用量に注意が必要です。

ヘッダー付きCSVを連想配列として読み込む

CSVファイルにヘッダー行が含まれている場合、そのヘッダーをキーとして各行を連想配列として扱うことができます。これにより、データをより直感的に操作することが可能です。

<?php
$file = fopen('example.csv', 'r');
$headers = fgetcsv($file); // 最初の行をヘッダーとして取得

$data = [];
while (($row = fgetcsv($file)) !== FALSE) {
    $data[] = array_combine($headers, $row); // ヘッダーをキーとして配列を作成
}

fclose($file);

print_r($data); // ヘッダーをキーとする連想配列
?>

この方法を使用すると、各データ行がヘッダーと関連付けられるため、特定の列を参照する際に便利です。

まとめ

PHPでCSVファイルを読み込む方法はいくつかあります。基本的な fgetcsv() 関数を使う方法から、ファイル全体を配列として読み込む方法、ヘッダー付きCSVを連想配列として扱う方法まで、用途に応じて選択できます。これらの方法を使いこなすことで、CSVファイルを効率よく処理することができるでしょう。