電子書籍の厳選無料作品が豊富!

次の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 )

A 回答 (3件)

回答1です。



>> の”[cosmos]”とは
>2列目のデータというつもりだったのですが・・・・。
常識的には[1]を指定すると思うのですが。

>1次元の配列にしてみますが、各レコードの2番目のデータだけを取り出すにはどうすれば良いでしょうか?
explodeなどのヘルプはまだご覧になってないですか?
http://www.php.net/manual/ja/function.explode.php
配列からn番目のデータの取得方法はすでにおわかりですよね?

でも、回答2の方のfgetcsvの方がいいような気がします。

もし、以上のヒント(というかほぼ答え)でもお分かりにならないなら、入門書で基本から学習された方がよろしいかと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/09/23 22:08

コードを例示される際は正確にした方がよいかと思います。


抜粋する場合や省略する場合は特に気をつけた方がよいです。

本題ですが、csvファイルの読み込みについてはfgetcsvを使った方が少し楽かと思います。
http://www.php.net/manual/ja/function.fgetcsv.php

それから、csvファイルの内容が不変とも限らないと思うので、forよりforeachでループさせた方がよいでしょう。
    • good
    • 0

>$cosmos = $TextData[i][cosmos];


の”[cosmos]”とは?

そもそも$TextDataは1次元で、$TextData[i]は文字列では?
$TextData[i]をexplodeかsplitで配列にしてから2番目の値を取り出せばいいのではないでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。
> の”[cosmos]”とは
2列目のデータというつもりだったのですが・・・・。

1次元の配列にしてみますが、各レコードの2番目のデータだけを取り出すにはどうすれば良いでしょうか?

お礼日時:2009/09/23 19:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!