• ベストアンサー

CSVデータのn番目だけの値を取得したい

次のCsvファイルがあります。この2番目の列の値(つまり20,35,58・・・)だけを取得(1次元配列に入れる)したいのです。 ,cosmos,himawari 710,20,106 725,35,131 805,58,175 820,97,180 903,110,180 次のようにしましたが、2番目の値だけの抽出が出来ません。どのように直せば良いでしょうか? <?php $TextData = file("./cosmos.csv"); for($i=0; $i<10; $i++){ $cosmos = $TextData[i][cosmos]; } return $cosmos print_r($cosmos); ?> 出力結果 Array ( [0] => ,cosmos,himawari [1] => 710,20,106 [2] => 725,35,131 [3] => 805,58,175 [4] => 820,97,180 [5] => 903,110,180 )

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

回答1です。 >> の”[cosmos]”とは >2列目のデータというつもりだったのですが・・・・。 常識的には[1]を指定すると思うのですが。 >1次元の配列にしてみますが、各レコードの2番目のデータだけを取り出すにはどうすれば良いでしょうか? explodeなどのヘルプはまだご覧になってないですか? http://www.php.net/manual/ja/function.explode.php 配列からn番目のデータの取得方法はすでにおわかりですよね? でも、回答2の方のfgetcsvの方がいいような気がします。 もし、以上のヒント(というかほぼ答え)でもお分かりにならないなら、入門書で基本から学習された方がよろしいかと思います。

spindle
質問者

お礼

ありがとうございました。 試行錯誤を重ね、少しずつ慣れて行きたいと思っています。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.2

コードを例示される際は正確にした方がよいかと思います。 抜粋する場合や省略する場合は特に気をつけた方がよいです。 本題ですが、csvファイルの読み込みについてはfgetcsvを使った方が少し楽かと思います。 http://www.php.net/manual/ja/function.fgetcsv.php それから、csvファイルの内容が不変とも限らないと思うので、forよりforeachでループさせた方がよいでしょう。

すると、全ての回答が全文表示されます。
回答No.1

>$cosmos = $TextData[i][cosmos]; の”[cosmos]”とは? そもそも$TextDataは1次元で、$TextData[i]は文字列では? $TextData[i]をexplodeかsplitで配列にしてから2番目の値を取り出せばいいのではないでしょうか。

spindle
質問者

お礼

ありがとうございます。 > の”[cosmos]”とは 2列目のデータというつもりだったのですが・・・・。 1次元の配列にしてみますが、各レコードの2番目のデータだけを取り出すにはどうすれば良いでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A