PHP で CSV ファイルを配列として取得する

  • PHP

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 );