PHPでCSV出力する処理をいつも忘れるのでとりあえずメモ

PHPでCSV出力する処理をいつも忘れるのでとりあえずメモ


どの現場でも必ずあるタスクが、CSV出力だと思います。

 

ただいつもこのタスクが自分は苦手というか、何となくいやだな〜って思うことが多いので、

ひとまず忘れないようにメモ。

 

今回テストように書いたソースはこんな感じ。

CSVに出力する用のデータは直にdata変数に保持。

$data = array(
  apple,
  orange,
  peach,
  banana
);
$filename = "fruits.csv";
$dir = "./".$filename;
if(file_exists($dir)) {
  unlink($dir);
}

foreach($data as $value) {
	$csv = mb_convert_encoding($value, 'SJIS-win', 'UTF-8');
	$fp = @fopen($dir, "a");
	if($fp) {
	  fwrite($fp, $csv."\n");
	  fclose($fp);
	}
}
ええ、ええ、そうです。
fopenとかfwriteとか、ファイルシステム関数が今ひとつ自分の血肉になっていない感じなんです。
最初にしていされたパスにファイルがあるかどうかチェック。
あれば削除。

if(file_exists($dir)) {
unlink($dir);
}
で書き込みたいデータをループで回し、
一応エンコード対策もして、
fopenでファイルを編集できるようにして、
fwriteで書き込み
fcloseでファイルを閉じる
みたいな流れになります。
foreach($data as $value) {
	$csv = mb_convert_encoding($value, 'SJIS-win', 'UTF-8');
	$fp = @fopen($dir, "a");
	if($fp) {
	  fwrite($fp, $csv."\n");
	  fclose($fp);
	}
}
実際に出力されたCSVファイルには、
ちゃんとCSVに書き込まれているようです。OKー
fopen とか fwriteとか、このあたりは絶対に業務で使うと思いますので、早めに習得することをおすすめします。
慣れたら、どの言語も似通った関数が用意されてるので、一度使いこなせたら大丈夫ですね。