### CSVの作成
– 文字化けしないよう、stream_filter_prepend($f,’convert.iconv.utf-8/cp932′);の一文を挿入する
$ary = [ ["名前", "年齢", "血液型", "備考"], ["山田", "12", "O",""], ["田中", "20", "A",""], ["吉田", "18", "AB",""], ["伊藤", "19", "B", "エンジニア"] ]; $filename = "test.csv"; $f = fopen($filename, "w"); stream_filter_prepend($f,'convert.iconv.utf-8/cp932'); if($f) { foreach($ary as $line){ fputcsv($f, $line); } } fclose($f);
### 配列にカラムを追加
$ary = [ // ["名前", "年齢", "血液型", "備考"], ["山田", "12", "O",""], ["田中", "20", "A",""], ["吉田", "18", "AB",""], ["伊藤", "19", "B", "エンジニア"] ]; $column = ["名前", "年齢", "血液型", "備考"]; array_unshift($ary,$column);
### 配列の途中に空白を追加
$column = ["名前", "年齢", "血液型", "備考"]; array_splice($column, 1, 0, ""); echo "<pre>"; var_dump($column); echo "</pre>";
### 二次元配列の途中に空白を追加
// DBから抽出 $ary = [ ["山田", "12", "O",""], ["田中", "20", "A",""], ["吉田", "18", "AB",""], ["伊藤", "19", "B", "エンジニア"] ]; // 空白追加 foreach($ary as $key => $value){ array_splice($ary[$key], 1, 0, ""); } // カラム追加 $column = ["名前", "無記入", "年齢", "血液型", "備考"]; array_unshift($ary, $column); echo "<pre>"; var_dump($ary); echo "</pre>";
これでCSVをエクスポートすると…
### csv.fileのダウンロード
$filename = "test.csv"; header('Content-Type: application/octet-stream'); header('Content-Length: '.filesize($filename)); header('Content-Disposition: attachment; filename=test.csv'); readfile($filename);
作成とダウンロードを一緒にやる場合の方が多いと思うが、予め作成したcsvファイルをダウンロードするだけ、ということも可能。
OK, 次行こう。