Playground

phpでcsvファイルを解析

この記事は約3分で読めます。
スポンサーリンク

csvファイルをphpで解析するプログラムを作りたくなったので作ってみました。

下記のようなデータが入ってるcsvファイル(uriage.csv)があるとします。
年度売上費用
20013425123
20021232453
20032344564
20043453452
20055673686
20063453565
20072352453
20083453455
20094565123
20102345435
20113454345
20123534234
20134564567
20143453232
20153245123
20168957234
あとは下記に記載されてあるソースコードにファイルを渡してあげることで多次元配列化でに出力してくれます。
二枚目は解析するcsvファイルです。
<?php
$filepath = "uriage.csv"; //csvファイル

$data = file_get_contents($filepath);
$data = mb_convert_encoding($data, 'UTF-8', 'sjis-win'); //shift-jisからutf-8へ変換

$temp = tmpfile();
$meta = stream_get_meta_data($temp);

$file = new SplFileObject($meta['uri']);
$file->setFlags(SplFileObject::READ_CSV);

foreach ($file as $key1 => $value1) {
    foreach ($value1 as $key2 => $value2) {
      $csv[$key1][$key2] = $value2;
    }
}

print_r($csv);
?>

foreachを二重にして解析をしていますが、

foreach ($file as $line) {
    $csv[] = $line;
}

でも可能です。
解析したデータにいろいろ弄りたいためforeachを二回回しています。

参考
・”PHP ARCHIVE”, http://php-archive.net/php/csv-tsv-array/ (2015/09/14)

コメント

タイトルとURLをコピーしました