プロが教える店舗&オフィスのセキュリティ対策術

PHPを学習中です。CSVを多次元化して最後はセッションに格納し、自由に他のページでもそのセッションを読み込めるようにしたいです。

CSVの中身はコード名、商品名、値段、在庫数になっています。

while(!eof($f_pt)){
 $data=fgets($f_pt);
 $data=rtrim($data);
 $str=explode(",",$data);
 $str[0]=array($str[1],$str[2],$str[3]);
}

こんな風にひとまずコードに格納してwhileで回せばいいのかな??っと苦戦しています。


そしてセッションにしたあとforeachでどうやって配列で表示すればいいかわかりません。。。


アドバイス等頂けたら幸いです。よろしくお願いします。

A 回答 (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);
?>
    • good
    • 0
    • good
    • 0

str_getcsv()でチャレンジしてみてください



http://www.php.net/manual/ja/function.str-getcsv …

ちなみにfgetcsv()でもいけますが、多少煩雑になります

http://www.php.net/manual/ja/function.fgetcsv.php
    • good
    • 0
この回答へのお礼

お返事ありがとうございます^^

申し訳ございません。なるだけ学校の授業で習っていない関数はなるだけ使わず学習したいです。

そちらを使わずにする方法も出来れば教えて頂けませんでしょうか?よろしくお願い致します。

お礼日時:2012/02/22 10:44

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