ちょっと数学に挑戦です。
今回は掛算99の表を作ってみます。
最近ではインド式の19×19が流行っているみたいなので19×19で作ってみます。
(インドでは19×19まで暗記するらしいですね。)
まずは3×3の表を作ってみましょう。
プログラムを作るにあたって、変数にできる部分を見つけましょう。
(法則を見出すことが重要ですね。)
まず、1行目と2行目は同じ数字が入るので、1行目は特殊なものとして扱います。
1行目の数値を変数 『 t 』 としましょう。(上記画像、赤部分)
2行目、3行目・・・は同じパターンだということがわかります。
一番左のセルに行番号がきて、後は行番号×1行目の数値が並んでいきます。
よって、行の数字を変数 『 i 』 とします。(上記画像、青部分)
行の数字に1・2・3・4・・・と1から順に数字を掛けていくので、
この掛けていく数字を変数 『 j 』 とします。
よって、掛算の表に入っていく数字は、『 i 』 × 『 j 』で表せます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<table> <tr> <th>0</th> <th>1</th> <th>2</th> <th>3</th> </tr> <tr> <th>0</th> <td>1</td> <td>2</td> <td>3</td> </tr> <tr> <th>2</th> <td>2</td> <td>3</td> <td>6</td> </tr> <tr> <th>3</th> <td>3</td> <td>6</td> <td>9</td> </tr> </table> |
下記のソースが九九 3×3を表示するものになります。まず、見てみましょう。
『ソース:3×3の表』
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<table border="1"> <tr> <?php for ($t = 0; $t < 4; $t++) { print('<th>'.$t.'</th>'); } ?> </tr> <?php for ($i = 1; $i < 4; $i++) { print('<tr>'); print('<th>'.$i.'</th>'); for ($j = 1; $j < 4; $j++) { print('<td align="right" width="30">'.($i * $j).'</td>'); } print('</tr>'); } ?> </table> |
部分ごとに分解しますと
テーブルなので、<table></table>を入力し、その中にソースを記載していきます。
1 2 |
<table border="1"> </table> |
下記が最初の図の赤字部分を表示します。
変数 『 t 』 が 0~4未満まで増加して(今回は0から1ずつ増やして4未満までなので、実際には3)で止まります。
1 2 3 4 5 6 7 |
<tr> <?php for ($t = 0; $t < 4; $t++) { print('<th>'.$t.'</th>'); } ?> </tr> |
実行されると以下のようなHTMLが生成されます。
1 2 3 |
<tr> <th>0</th><th>1</th><th>2</th><th>3</th> </tr> |
1 2 3 4 5 6 7 8 9 10 11 |
<?php for ($i = 1; $i < 4; $i++) { print('<tr>'); print('<th>'.$i.'</th>'); for ($j = 1; $j < 4; $j++) { print('<td align="right" width="30">'.($i * $j).'</td>'); } print('</tr>'); } ?> |
こちらはfor構文の中にfor構文が入っている2重構造になっています。
プログラムの動きを追ってみましょう。
まず、一番左の列(1・2・3・4と増えていきます)
<tr> ← print(‘<tr>’); が実行されます。
<th>1</th> ← print(‘<th>’.$i.’</th>’);
ここまでが外側のループです。
ここから内側のループに入ります。変数『 j 』が1から3まで増加します。
1 2 3 |
<td align="right" width="30">1</td> <td align="right" width="30">2</td> <td align="right" width="30">3</td> |
これで内側のループが終了です。
最後に『</tr>』が必要なので外側のループが</tr>を表示させます。
1 |
print(‘</tr>’); |
これを条件が満たされるまで繰り返していきます。
いま、条件の数字が4未満となっているので、19×19にしたい場合は、4を20に変更すればOKです。
人気記事一覧
- MySQL 最大の値・最新の日付データを1つ抽出する方法(MAX)
- [CakePHP] XformHelperの使い方
- Linux: スワップファイル(swp)の削除方法
- HTMLのForm methodとactionについて
- PHPでカンマ区切りデータを配列に入れる方法 (explode)
- [エラー対処] failed to open stream: No such file or directory
- [CSS]ブロック要素(div)の高さを、内部のfloat要素に合わせて自動調整する
- [vsftp] FileZillaから接続できない場合の対処法
- PHP5.1→PHP5.3へバージョンアップする方法(CentOS)
- PHPでテキストを1行ずつ読み込む方法(file_get_contents,explode)