- ベストアンサー
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行にどのようにすればよいで しょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#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)
内側のループは、実行されるたびに「状態」が違う必要がありますよね? 1回目: 1~10 2回目: 11~20 : : と、いうことは、内ループの外の情報を持ってこないといけません。 そして、その「状態」は、外ループのカウンタ$xに依存しています。 と、言うわけで、回答は、No1さんのとおりでどうでしょうか? 外ループの情報$xを用いて、10の位を内ループに持ってくるのです。
- nikuq
- ベストアンサー率22% (8/36)
こんな感じではいかがでしょうか。 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)
> print "<TD>$i</TD>"; を print "<TD>" . ($x-1)*10+$i . "</TD>"; とすればいかがでしょうか。