個人的プログラムの備忘録

プログラム初心者の自分の為に書く備忘録なのでこのサイトに載っているコードで不具合が起きても責任は取れませんので自己責任でお願いします。

CSV出力するのに学んだメモ

      2015/12/23

ワードプレスでCSV出力する必要があったのでそのときに学んだメモ。
参考にさせてもらったサイトはあずみ.netさんの「ワードプレスの簡易CSVエクスポートプラグインを作ってみた。」を参考にしました。

dirname( __FILE__ )

は自分自身へのパス

dirname( __FILE__ ) . '/csv/sample.csv';

とすれば(今回はワードプレスのプラグインフォルダ)

/public_html/自分のドメイン/wp/wp-content/plugins/csv/sample.csv

となる。
テスト環境などでXAMPPを使っていてそこで作ったファイルに記述したなら

C:\xampp\htdocs\フォルダ名/csv/sample.csv

となる。

fopen(‘ファイル名’ , ‘モード’)

はファイルポインタをオープンする…とのことだけどいまいちわからなかったけど
ようはそのままの意味で指定したファイルを開く※(無ければ新規作成)する。
※は指定したモードによる。
モードは8種類あるが、’r’と’w’と’a’が主に使うものっぽい。

・r – 読み込み専用。初期のファイルポインタ位置はファイルの先頭。
・w – 読み込み専用。初期のファイルポインタ位置はファイルの先頭。最初に1回だけファイルを空にする。
  ファイルがない場合は作成する。
・a – 読み込み専用。初期のファイルポインタ位置はファイルの末尾。ファイルがない場合は作成する。

試しに

fopen('file.csv', 'w')

としたらfile.csvを作ってくれていた。

fputcsv($handle , array $fields)

は、行($fields 配列として渡されたもの)をCSVとしてフォーマットして、それを$handleで指定したファイルに書き込みしてくれる。
これのパラメータ$handleは「ファイルポインタは、有効なファイルポインタである必要があり、 fopen() または fsockopen() で正常にオープンされた (そしてまだ fclose() でクローズされていない) ファイルを指している必要があります。」とのこと。
これは説明よりもサンプルコード見たほうが早いかも。

<?php

$list = array (
    array('リンゴ', 'バナナ', 'みかん', 'キュウイ'),
    array('123', '456', '789'),
    array('"野球"', '"サッカー"')
);
//ここでfile.csvをオープン(新規作成)
$fp = fopen('file.csv', 'w');
//配列を1行ずつ取り出す。
foreach ($list as $fields) {
    //取り出した配列を書き込む
    fputcsv($fp, $fields);
}
//最後に閉じる
fclose($fp);
?>

これで書き出されたfile.csvの中身は

リンゴ,バナナ,みかん,キュウイ
123,456,789
"""野球""","""サッカー"""

になる。

これ理解すればなるほど~ってなるけど全然知らないでコピペしてるだけだと応用が効かない。
一つ一つ何故こうなのかとか実際に自分で動作確認してエラーが起きたらとにかくvar_dumpする!
すごく初歩的なことなんだろうけど今回は非常に勉強になった。

 - PHP, Wordpress

Sitio web optimizado por: Posicionamiento en Google
Plugin Modo Mantenimiento patrocinado por: Plugin WordPress Maintenance