• ベストアンサー

phpでcsvファイルから二次元配列を作る

php初心者です。 phpでcsvファイルを読み込んで、 配列[csvの行番号][項目名(csv一行目の内容)]=各々の値 という二次元配列を作りたいのですが、作り方が全く分かりません。 どなたか教えてください。

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

  • ベストアンサー
  • masa6272
  • ベストアンサー率66% (93/140)
回答No.2

<?php $fp = fopen('foo.csv', 'r'); $titles = fgetcsv($fp); while($line = fgetcsv($fp)) { $res[] = array_combine($titles, $line); } fclose($fp); var_dump($res) ?> こんなんでどうでしょう? array_combine()が味噌です。

pop4532
質問者

お礼

ありがとうございました。 array_combineは使った事が無かったので(というか知りませんでした)とても勉強になりました。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

データ構造のチェックや、ヘッダーがユニークかどうかなど 手をいれないといけないですが、とりあえずこんな感じで //hoge.php <? $fname="hoge.csv"; $handle=fopen($fname,"r"); $flg=true; $count=0; while ($row = fgetcsv($handle,1024, ",")) { if($flg){ $header=$row; $flg=false; }else{ foreach($row as $key=>$val){ $rows[$count][$header[$key]]=$val; } } $count++; } print "<pre>"; print_r($rows); print "</pre>"; ?> //hoge.csv head1,head2,head3 data11,data12,data13 data21,data22,data23 data31,data32,data33 data41,data42,data43 data51,data52,data53 data61,data62,data63

pop4532
質問者

お礼

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

関連するQ&A