- ベストアンサー
phpでCSVファイルの中身を多次元配列にしたい
- PHPを学習中です。CSVを多次元化してセッションに格納し、他のページでも読み込めるようにしたいです。
- CSVの中身はコード名、商品名、値段、在庫数です。
- コードに格納してwhileループで回し、セッションに格納した後は配列をforeachで表示する方法がわかりません。アドバイスをお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>学校の授業で習っていない関数はなるだけ使わず学習したいです。 なるほどねぇ とはいえ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)
- yambejp
- ベストアンサー率51% (3827/7415)
str_getcsv()でチャレンジしてみてください http://www.php.net/manual/ja/function.str-getcsv.php ちなみにfgetcsv()でもいけますが、多少煩雑になります http://www.php.net/manual/ja/function.fgetcsv.php
お礼
お返事ありがとうございます^^ 申し訳ございません。なるだけ学校の授業で習っていない関数はなるだけ使わず学習したいです。 そちらを使わずにする方法も出来れば教えて頂けませんでしょうか?よろしくお願い致します。