• ベストアンサー

超初心者の質問

高校生です。 最近、phpの本の最初らへんを読み始めて初歩的な関数で 「1~6の数をランダムに出し(ようするにサイコロ)それを100回やって、 どの目が何回出たか出力する」というスクリプトを作ろうとしたのですが。 <?php $k1=0; $k2=0; $k3=0; $k4=0; $k5=0; $k6=0; for($goukei=0;$goukei=100;$goukei++){ $chi=rand(1,6); switch($chi){ case 6: $k6++; break; case 5: $k5++; break; case 4: $k4++; break; case 3: $k3++; break; case 2: $k2++; break; case 1: $k1++; break; } } print "<table border=1> <tr><td>6</td><td>5</td><td>4</td><td>3</td><td>2</td><td>1</td></tr> <tr><td>".$k6."</td><td>".$k5."</td><td>".$k4."</td><td>".$k3."</td><td>".$k2."</td><td>".$k1."</td></tr></table>"; ?> を書いたら、 Fatal error: Maximum execution time of 60 seconds exceeded in C:\xampp\htdocs\saikoro.php on line 10 と出てしまいました。突っ込み所が多くてアレですが、「とりあえず最後まで本読めや!」とか言わず、ご指導してくださればありがたいです。

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

  • ベストアンサー
noname#77845
noname#77845
回答No.1

とりあえず、 for($goukei=0;$goukei=100;$goukei++){ を for($goukei=0;$goukei<100;$goukei++){ に変更しましょう。 比較演算子の使い方が間違っています。 $goukei=100 は代入です。 代入を判定に使用しているので常に真になっていて、永久ループに入っているのです。 for文は条件文が真の間回り続けますからね。 なので、$goukeiが100未満のとき真になるように変更しました。 因みに、 $goukei<100 だと100回、 $goukei<=100 だと101回、回るのは判りますよね?

wccf202
質問者

お礼

回答ありがとうございます。 とても丁寧でわかりやすいです

その他の回答 (1)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

参考までに別のやり方。 $sai = array(); foreach(range(1,100) as $r){ $sai[rand(1,6)]++; } print "<table border=\"1\">\n"; print "<tr>\n"; for($i=1;$i<=6;$i++){ print "<td>$i</td>\n"; } print "</tr>\n"; print "<tr>\n"; for($i=1;$i<=6;$i++){ print "<td>" .$sai[$i] ."</td>\n"; } print "</tr>\n"; print "</table>\n";

wccf202
質問者

お礼

回答ありがとうございます。 例を有り難うございます

関連するQ&A