dポイントプレゼントキャンペーン実施中!

省略して説明します。


関東,東京,神奈川,千葉
中部,愛知,静岡,岐阜
関西,大阪,兵庫,京都


というCSVデータがあり
これを以下のような、連想配列にしたいのですがどうすればよいのでしょうか??



Array
(
  [0] => Array
   (
     [0] => 関東
     [1] => 東京
     [2] => 神奈川
     [3] => 千葉
   )
  [1] => Array
   (
     [0] => 中部
     [1] => 愛知
     [2] => 静岡
     [3] => 岐阜
   )
  [2] => Array
   (
     [0] => 関西
     [1] => 大阪
     [2] => 兵庫
     [3] => 京都
   )
)






---------------------------------

CSVデータを、feofで終端まで読み込み
feofで一行ずつ取得
explodeでコンマで分解まではできるのですが

上記のような、連想配列ができません・・。


ご教授よろしくお願いします。

A 回答 (3件)

$fp = fopen("a.csv", "r");


$arr = array();
while(!feof($fp)) {
$arr[] = split(",", fgets($fp));
}
fclose($fp);
print_r($arr);

こんなのはどうでしょうか。
ちょっと動かしてないので間違えてるかも知れません。。
    • good
    • 0
この回答へのお礼

ありがとうございます!!!
できました♪


2行目の『$arr = array();』と、4行目の『$arr[] 』
がいまいち理解できていないので
よければ簡単に解説していただけないでしょうか?

お礼日時:2007/09/15 01:48

すいません。

補足です。
改行が残ってしまってそうな気がしたので、rtrimとかを使った方がいいかも知れません。

while(!feof($fp)) {
$arr[] = split(",", fgets($fp));
}

この部分を

while(!feof($fp)) {
$line = rtrim(fgets($fp));
$arr[] = split(",", $line);
}

こうした方が良いと思います。
    • good
    • 0
この回答へのお礼

なるほどです。
参考にさせていただきます。
ありがとうございましたー

お礼日時:2007/09/15 11:34

$arr = array();


これは変数の初期化ですね、$a = 0;の配列バージョンです
$arr[] =
これは配列への代入ですね、インデックスを省略すると配列の最後に要素が追加されます。
$arr = array();
$arr[] = 1;
$arr[] = 2;
$arr[] = 3;

$arr = array();
$arr[0] = 1;
$arr[1] = 2;
$arr[2] = 3;
と同じ内容になります。
    • good
    • 0
この回答へのお礼

どうもです。

$arr = array();
は勉強になりました。
ありがとうございました。

お礼日時:2007/09/15 11:32

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