• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:別ファイルからのランダム抽出について)

ランダムに複数のテキストを抽出する方法

このQ&Aのポイント
  • php超初心者のために、同じフォルダ内のテキストファイルから複数のテキストをランダムに抽出する方法をご教示ください。
  • 抽出するテキストは、重複しないようにしたいと思っています。
  • ランダムに複数のテキストを抽出する際には、shuffle関数と配列を使用することで実現できます。

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

  • ベストアンサー
回答No.3

>Parse error:の表示が出てしまい、 「$maxno = rand(3,4)」の最後のセミコロン「;」が抜けてました。失礼しました。 先の回答でも触れましたが、どうして >$data = file("./php/random.txt"); >srand((double)microtime()*1000000); >shuffle($data); の3行をfor文の中において置くのでしょう? >抽出したテキストはダブることがありました。 ということの原因になっています。for文の前(正確には$maxno = rand(3,4);の前)に出してください。 コードのコピペだけでなく、コードの意味や動作確認をしっかり行ってください。 それを繰り返すことで補足質問のようなことは、ご自分で解決出るようになるはずです。

saataakaa
質問者

お礼

ありがとうございます。 おかげさまで目的のものができました! phpは今週初めて見たばかりで コードの意味とか全く考えずに質問したために 何度もお手間おかけしました。 ありがとうございました。

その他の回答 (2)

回答No.2

for文による動作は認識されますか? もしそうなら、 >$data = file("./php/random.txt"); >srand((double)microtime()*1000000); の2行はfor文から出しているはずです。 >ずっと3つで4つ抽出される時がありませんでした。 3つ表示か4つ表示するかもランダムなのでしょうか? どうやって3つ表示、4つ表示にするかの説明がありませんでしたので3つ固定にしました。 もしランダムに切り替えるなら、 >for( $i=0;$i < 3;$i++ ) を $maxno = rand(3,4) for( $i=0;$i < $maxno;$i++ ) に変更してください。

saataakaa
質問者

補足

ご回答ありがとうございます。 <?php $maxno = rand(3,4) for( $i=0;$i < $maxno;$i++ ) { $data = file("./php/random.txt"); srand((double)microtime()*1000000); shuffle($data); echo $data[$i]; } ?> と書き換えると Parse error:の表示が出てしまい、 indexが表示されませんでした。

回答No.1

>ランダムに3~4つ抽出するには shuffleによってランダムに並んでいるのだから for( $i=0;$i < 3;$i++ ) { echo $data[$i]; } でいいのでは?

saataakaa
質問者

補足

回答ありがとうございます。 <?php for( $i=0;$i < 3;$i++ ) { $data = file("./php/random.txt"); srand((double)microtime()*1000000); shuffle($data); echo $data[$i]; } ?> という式に変更してみたのですが、 3つ抽出されるようにはなったものの、 ずっと3つで4つ抽出される時がありませんでした。 かつ、抽出したテキストはダブることがありました。 私の記述が間違っているのでしょうか?

関連するQ&A