CSVファイルを読み込む方法のご紹介です。
商品の規格や価格をCSVにまとめて読み込めたら、商品仕様を載せたり、商品の見積りシミュレーションを実装したりする上で役立ちます。
やってることは:
- [メディアを追加]で、投稿に関連付けられたメディア(CSV)を取得
- fopen:CSVファイルをオープン
- fgetcsv:CSVを行ごとに読み込んで処理
- mb_convert_encoding:Excelで作成したCSVはshift-jisなので必要に応じて変換
- 行・列で必要に応じて配列に格納して、後処理に備える
//メディア取得(以下の例は投稿に関連付けた最初のCSVファイルを取得) $args = array( 'numberposts' => 1,//取得件数(初期値は5件、-1で全添付を取得) 'order' => 'ASC',//並び順 'orderby' => 'menu_order',//並び順の規準 'post_type' => 'attachment',//取得種類(この指定で添付を取得できる) 'post_mime_type' => 'text/csv',//取得するファイルタイプの指定 'post_parent' => $post->ID//帰属する投稿ID ); $attachments = get_posts( $args ); if ( $attachments ) { //csv解析開始 foreach ( $attachments as $attachment ) { $fileCSV = $attachment->guid; #csvファイルをオープン $fp = fopen($fileCSV,"r"); #fgetcsv関数がfalseを返却するまで実行 $cnt = 0; while($data = fgetcsv($fp)){ #csvファイルの列数だけ実行 for($i=0;$i<count($data);$i++){ #Excelで作成したCSVはshift-jisなのでこれがないと文字化けします $celDt = mb_convert_encoding($data[$i], "utf-8","shift-jis"); #解析結果を配列に格納 $hvalArr[$cnt][] = $celDt;//横方向の配列 $vvalArr[$i][] = $celDt;//縦方向の配列 $vvalArr[$i] = array_unique($vvalArr[$i]);//縦方向の配列(重複削除) } $cnt++; } #csvファイルをクローズ fclose($fp); }//csv解析完了 #取得した配列を表示して確認してみる echo '<pre>'; var_dump($hvalArr, $vvalArr); echo '</pre>'; }