- ベストアンサー
特定の数の中から特定の数をランダムに表示したい
phpあまり疎いのですが、質問させてください。 配列 $hairetu は20個の配列の値を持っています。 echo $hairetu[19]; echo $hairetu[13]; とかやると、それぞれ値が取れます。 この20個の中から5つをロードの度にランダムに抽出して表示したいです。 foreach(range(0,4) as $i){ echo $hairetu[$i]; } これだと毎回同じで意図したものではないです。 そもそもこのアプローチから違うのかもしれませんが、 ご教示いただければ有難いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
array_randを使うのが何よりも簡単です。 PHP Manual - array_rand http://www.php.net/manual/ja/function.array-rand.php foreach (array_rand($hairetu, 5) as $i) { echo $hairetu[$i]; }
その他の回答 (1)
- freetaka
- ベストアンサー率53% (106/197)
普通にランダムに抽出するだけであれば $cnt = 0; while ($cnt < 5){ echo $hairetu[rand(0,19)]."<br>"; $cnt++; } な感じでいけますが 乱数の値が重複してしまうので 同じ内容が表示されてしまいます それでいい場合は上記でいけます 重複しないようにする常套手段としては shuffle関数を使用します 方法は //0~19までの数値をいれた配列を用意する $rnd = range(0,19); //配列の中身をシャッフルする shuffle($rnd); $cnt = 0; while ($cnt < 5){ //シャッフルした配列を乱数として利用 echo $hairetu[$rnd[$cnt]]."<br>"; $cnt++; } という感じになります
お礼
ありがとうございます! 解説が丁寧で不得手な私にも理解できました! 記述方法の勉強にもなりました! またの機会にはよろしくお願いいたします!
お礼
ありがとうございます! 記述がシンプルでわかりやすいです! またの機会にはよろしくお願いいたします!