以下のようなcsvがあります。

入荷日 消費期限 店舗 果物 価格
"20121216" "20121219" "TYO" "Orange" "100"
"20121216" "20121219" "TYO" "Apple" "150"
"20121216" "20121219" "TYO" "Grape" "180"
"20121217" "20121220" "TYO" "Orange" "110"
"20121217" "20121220" "TYO" "Apple" "130"
"20121217" "20121220" "TYO" "Grape" "190"

このcsvをphpで読み込んで
<? echo $array[20121216][TYO][Apple] ?>などとすると
150
と返ってくるようなphpの書き方がうまくいきません。
(ここでは消費期限は使っていません)

初歩的なところで恐縮ですがご教授いただけないでしょうか。
よろしくお願いします。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2012/12/19 19:22:03

ベストアンサー

id:KeyKey No.1

回答回数29ベストアンサー獲得回数4

力技ですがこんな感じでどうでしょう?

//TSVファイルを1行ずつ配列に
$lines = file('hoge.tsv');

//1行ずつループ
foreach ($lines as $val) {
    $_line = array();
    $line = array();
    //タブ文字で区切って配列に
    $_line = explode("\t", $val);
    foreach ($_line as $val2) {
        //両端のダブルクォーテーションを取り除く
        $line[] = trim($val2, '"');
    }
    //配列に格納
    $array[$line[0]][$line[2]][$line[3]] = $line[4];
}
id:ibatasn

ありがとうございました!!助かりました!

2012/12/19 19:22:25
  • id:taknt
    "20121216" "20121219" "TYO" "Orange" "100"
    というのは CSVじゃない。

    CSVのCは カンマのこと。
    CSVは カンマ区切りのデータを意味します。

    なので
    "20121216","20121219","TYO","Orange","100"
    というようになります。
  • id:ibatasn
    すみませんこの場合はtsvですね。。
  • id:taknt
    ああタブ区切りなんですね。
    CSVになってないから うまくいかないのかなー?って思ったんですけど
    具体的に どうやりましたか?
  • id:ibatasn
    いろいろサンプル見ながら試してるんですが
    なんともうまくいかなくて・・
    もう少し形にしてから投稿したほうがよさそうですね。。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません