CSV のファイルを PHP を使って読み込む簡単な関数です。一番最初の行を列名と仮定し、キー名として使用します。
mb_convert_encoding()
については、sjis-win から utf-8 に変換していますが、必要なければこの関数でラップしなくても構いません。
/**
* UTF-8のCSVファイルを読み込み、最初の行を列名として返す
* @param string $file 読み込むcsvファイルパス
* @return array
*/
function readCsv( $file )
{
$dataArray = [];
$csv = mb_convert_encoding( file_get_contents( $file ), "UTF-8", "sjis-win");
$tmp = tmpfile();
fwrite( $tmp, $csv );
rewind( $tmp );
//最初の行を列名とする
$keys = $csv = fgetcsv( $tmp, 0, "," );
//列名をキーとして、データを結合する
while ( ( $csv = fgetcsv( $tmp, 0, "," ) ) !== false ) {
$dataArray[] = array_combine( $keys, $csv );
}
fclose( $tmp );
return $dataArray;
}
使用
同じ階層にある sample.csv を読み込む例。
$file = './sample.csv';
$csv = readCsv( $file );