概要
MacのMicrosoft Office Excelで作られたCSVファイルをPHP5.5で連想配列にするサンプルコードです。
CSVファイルのfilename(ファイルパス)を引数で渡すと、連想配列をreturnします。
CSVの文字コードを事前に変更する必要はありません。
returnする配列の文字コードはUTF8になります。
配列は、CSVファイルの1行目をkeyにした連想配列になります。
php
function loadCSV($filename) {
setlocale(LC_ALL, 'ja_JP.UTF-8');
$data = file_get_contents($filename);
//macで作られたCSVの改行コードを置換
$data = ereg_replace("\r\n|\r|\n", "\n", $data);
$data = mb_convert_encoding($data, 'UTF-8', 'sjis-win');
$tmp = tmpfile();
$csv = array();
fwrite($tmp, $data);
rewind($tmp);
$i = 0;
while (($data = fgetcsv($tmp, 0, ",")) !== FALSE) {
if ($i == 0) {
foreach ($data as $colum) {
$colums[] = $colum;
}
} else {
$csv[] = $data;
}
$i++;
}
foreach ($csv as $data) {
$return[] = array_combine($colums, $data);
}
return $return;
}