質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

996閲覧

PHP CSVの任意のタイトル(文字列)の列だけ表示したい

taksam

総合スコア12

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2017/07/11 07:04

以下のようなhoge.csvがあり(-は様々な文字列)、E列だけ表示したい場合、

A,H,C,E,B,F,G,D
1,-,-,-,-,-,-,-
2,-,-,-,-,-,-,-
3,-,-,-,-,-,-,-
4,-,-,-,-,-,-,-
5,-,-,-,-,-,-,-
6,-,-,-,-,-,-,-
7,-,-,-,-,-,-,-
8,-,-,-,-,-,-,-
9,-,-,-,-,-,-,-

以下のコードで

$cav = "hoge.csv";
$file = fopen($cav,"r");
while(!feof($file)) {
$csv = fgets($file);
$str = explode(",", $csv);
echo $str[$raw]."<br />";
}
fclose($file);

$raw を 3にしてやれば実現できるところまでは理解しているのですが、何列目という指定ではなく、1行目がEなら表示するというように文字列で指定するにはどうすれば良いのでしょうか。

Eだけではなく、Hなら、Gならと、指定できるようにしたいのですが、初心者ゆえに方法が思いつきません。

受け取るcsvの1行目(タイトル)が一定ではないため、四苦八苦しております。

実現可能であればご教示いただけませんでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

PHP

1<?php 2 $cav = "hoge.csv"; 3 $file = fopen($cav, "r"); 4 $heads = explode(",", fgets($file)); 5 $index = array_search("E", $heads); 6 if($index !== false) { 7 while(!feof($file)) { 8 $arr = explode(",", fgets($file)); 9 if($index < count($arr)) { 10 echo $arr[$index] . "<br />"; 11 } 12 } 13 } 14 fclose($file);

こういうことかしら

投稿2017/07/11 07:29

rururu3

総合スコア5545

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taksam

2017/07/11 07:52

ありがとうございました! 試してみた結果、希望通りに動作することを確認しました。 こんな短時間で解決するとは思っていなかったので感謝の言葉もありません。 また何かありましたら何卒よろしくお願い致します。
guest

0

-hoge.csv

CSV

1A,H,C,E,B,F,G,D 21,a1,b1,c1,d1,e1,f1,g1 32,a2,b2,c2,d2,e2,f2,g2 43,a3,b3,c3,d3,e3,f3,g3 54,a4,b4,c4,d4,e4,f4,g4 65,a5,b5,c5,d5,e5,f5,g5 76,a6,b6,c6,d6,e6,f6,g6 87,a7,b7,c7,d7,e7,f7,g7 98,a8,b8,c8,d8,e8,f8,g8 109,a9,b9,c9,d9,e9,f9,g9

hoge.php

PHP

1$fp=fopen("hoge.csv","r"); 2$rows=array(); 3$header=array(); 4$flg=ture; 5while(!feof($fp)) { 6 $row = explode(",", fgets($fp));; 7 if($flg){ 8 $header=$row; 9 $flg=false; 10 continue; 11 } 12 $rows[$row[0]]=&$row2; 13 for($i=1;$i<count($header);$i++){ 14 $row2[$header[$i]]=$row[$i]; 15 } 16 unset($row2); 17} 18fclose($fp); 19foreach($rows as $row){ 20print $row["E"]."<br>"; 21} 22 23

投稿2017/07/11 07:22

yambejp

総合スコア114839

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taksam

2017/07/11 07:50

早々の回答、ありがとうございました。 少し席を外している間に解決策をご教示いただけるなんて本当に感激です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問