• ベストアンサー

10*10行の表をforループで作りたい

表を数字1から100まで10行*10行作りたいと思っています。1~10までい ったら次の行、11~20までいったら次の行というように作成したいとおもっ ています。 for($x=1;$x<=10;$x++){ print "<TR>"; for($i=1;$i<=10;$i++){ print "<TD>$i</TD>"; } print "</TR>"; と書くと10行*10行の表は作れるのですが、1~10までのものが10行できてし まいます。これを1~100までの数字を10行*10行にどのようにすればよいで しょうか?

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

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

#1でも#2でも良さそうです。 せっかくなので別の書き方も $i%10 で余りを求めています。 for($i=1;$i<=100;$i++){  if($i%10 == 1) print "\n<tr>";  print "<td>{$i}</td>";  if($i%10 == 0)print "</tr>"; } //見た目のため、全角文字が入ってます。そのままコピペじゃ動きません。

その他の回答 (3)

  • Xaval
  • ベストアンサー率58% (61/105)
回答No.4

内側のループは、実行されるたびに「状態」が違う必要がありますよね? 1回目: 1~10 2回目: 11~20 : : と、いうことは、内ループの外の情報を持ってこないといけません。 そして、その「状態」は、外ループのカウンタ$xに依存しています。 と、言うわけで、回答は、No1さんのとおりでどうでしょうか? 外ループの情報$xを用いて、10の位を内ループに持ってくるのです。

  • nikuq
  • ベストアンサー率22% (8/36)
回答No.2

こんな感じではいかがでしょうか。 for($x = 1; $x <= 100; $x++) { $count++; if("${count}" == "1") { print "<tr>"; } print "<td>$x</td>"; if("${count}" == "10") { print "</tr>"; unset("${count}"); } } 繰り返し回数が1回目と10回目に<tr></tr>をいれ、 10回目の時に$countを初期化します。 うちのサーバでテストしたら無事表示されましたよん。

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

> print "<TD>$i</TD>"; を print "<TD>" . ($x-1)*10+$i . "</TD>"; とすればいかがでしょうか。