• ベストアンサー

array_randを使いたい?

phpでarray_randを使ってCSVのデータをランダム表示させたいです。 phpの知識がなくどのようにすればいいかわかりません。 CSVは id,商品名,説明文,価格,画像URL,リンク先URL, こんな感じになっています。 いろいろと調べてランダムにするにはarray_randを使えばいいのがわかったのですが、どのようにPHPを書けばいいかわかりません。 すいませんが、詳しく教えていただけないでしょうか?よろしくお願いします。

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

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

一部間違いがありましたので修正 <?php $handle = fopen("test.csv", "r"); while (($data= fgetcsv($handle, 1000, ",")) !== FALSE) { $datas[]= $data; } fclose($handle);//ここまででデータを読む $row= rand(0,count($datas)-1);//ランダムに一つ選ぶ print <<<eof 商品名:{$datas[$row][1]}<br> 説明:{$datas[$row][2]}<br> eof; //商品名と説明を表示 } ?>

siraku
質問者

お礼

ご回答本当にありがとうございました。無事解決いたしました。

その他の回答 (2)

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

ランダムに1個ならarray_randはいらないですね。 行数をカウントした上で、rand()で実装できます。 こんなかんじでどうでしょう? #test.csv 1,バナナ,きいろい果物,100,banana.jpg,ttp://banana.com 2,りんご,あかい果物,200,apple.jpg,ttp://apple.com 3,ぶどう,むらさきの果物,500,grape.jpg,ttp://grape.com 4,すいか,みどりの果物,1000,wmelon.jpeg,ttp://wmelon.com #phpファイル <?php $handle = fopen("test.csv", "r"); while (($datas[]= fgetcsv($handle, 1000, ",")) !== FALSE) {} fclose($handle); $row= rand(0,count($datas)-1); foreach($datas[$row] as $val){ print $val.","; } ?>

siraku
質問者

お礼

ご回答ありがとうござます。早速ためさせて頂きました。 とりあえずそのまま、コピーしてアップしてみたところ、表示は出来ました。ところが、何回かにエラーが表示されるようです。 エラーの詳細 Warning: Invalid argument supplied for foreach() in /home/sites/lolipop.jp/users/****/****/index.php on line 6 それと、もう1つお聞きしたいのですが、商品名,説明文,,,, これを表示する場合このような表示でいいのでしょうか? 表示例? print<html>\n"; print<body>\n"; print $val[1]<br>\n"; print $val[2]<br>\n"; print $val{3]<br>\n"; print</body>\n"; print</html>\n"; もし、全然違うようでしたら教えてください。よろしくお願いします。

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

>ランダム表示させたい ランダムに1こ表示すればいいのか、 全データをランダムな順番で表示したいのか によって微妙にちがうとおもいます。

siraku
質問者

補足

お返事ありがとうございます。 ランダムに1個だけ表示させたいです。 よろしくお願いします。

関連するQ&A