色々調べた結果、最終的に下記のコードになった。
// ローカル上のファイル名を定義
$csv = '';
// SJISのCSVファイルをUTF-8変換
file_put_contents($csv, mb_convert_encoding(file_get_contents($csv), 'UTF-8', 'SJIS'));
// CSVファイルの内容を取得
$file = new SplFileObject($csv, 'r');
$file->setFlags(SplFileObject::READ_CSV);
$header = [];
foreach ($file as $row) {
// 最終行をスキップ
if ($row === null) continue;
// ヘッダーを取得
if (empty($header)) {
$header = $row;
continue;
}
// csvヘッダーをキーにして値を格納
$item[] = array_combine($header, $row);
}
今回は文字コードがSJISのCSVファイルを扱ったので、まずUTF-8に変換してからCSVファイルの内容を取得する処理を実行している。
CSVの内容を取得するにあたって下記の記事を参考にした。
array_combine()でヘッダーをキーにして対応する値をセットしている。(便利で助かった。。。)