• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpでCSVファイルの中身を多次元配列にしたい)

phpでCSVファイルの中身を多次元配列にしたい

このQ&Aのポイント
  • PHPを学習中です。CSVを多次元化してセッションに格納し、他のページでも読み込めるようにしたいです。
  • CSVの中身はコード名、商品名、値段、在庫数です。
  • コードに格納してwhileループで回し、セッションに格納した後は配列をforeachで表示する方法がわかりません。アドバイスをお願いします。

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

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

>学校の授業で習っていない関数はなるだけ使わず学習したいです。 なるほどねぇ とはいえfeof()を習ってて、fgetcsv()を習ってないというのは いかにも中途半端な気がしますが・・・ ご提示のソースを見るにいろいろ問題があります。 >while(!eof($f_pt)){ eof→feofですね >$data=rtrim($data); 行末の改行マークを削除しているつもりでしょうけど スペースやタブなどもなくなっちゃいますね >$str=explode(",",$data); csvだけにデリミタ(区切り文字)を「,」としているのはわかります エンクロージャ(囲み文字)は指定していないのでしょうか? それとexplode()の結果を$strという変数で受けるのもあまり 美しくないですね。戻り値は配列ですから >$str[0]=array($str[1],$str[2],$str[3]); これはデータ構造を理解していないと思います。 元のソースを活かすとして総じてこんな感じでしょうか? <?PHP $fname="test.csv"; $datas=array(); $f_pt=fopen($fname,"r"); while (($temp_line = fgets($f_pt, 4096)) !== false) { $temp_line=str_replace(array("\r","\n"),"",$temp_line); $temp_array=explode(",",$temp_line); $datas[]=$temp_array; } var_dump($datas); ?>

その他の回答 (2)

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

str_getcsv()でチャレンジしてみてください http://www.php.net/manual/ja/function.str-getcsv.php ちなみにfgetcsv()でもいけますが、多少煩雑になります http://www.php.net/manual/ja/function.fgetcsv.php

noname#159858
質問者

お礼

お返事ありがとうございます^^ 申し訳ございません。なるだけ学校の授業で習っていない関数はなるだけ使わず学習したいです。 そちらを使わずにする方法も出来れば教えて頂けませんでしょうか?よろしくお願い致します。

関連するQ&A