【PHP】初心者必見!!繰り返し処理(for文)の使い方について解説!!
ループとは、while文でも解説しましたが、「繰り返し処理」とも言い特定の条件が満たされるまで同じ数のコードを何度も実行する事を言います。
もし、while文について知りたいと思う方は下記をご参照ください
PHPのループ処理はいくつかありますが、今回はfor文の使い方についてわかりやすく解説していきます。
ループ処理を使うと、数値や数式などを何回も書かなくて済みますので、非常に便利です。
目次
PHPのfor文の書き方
for文の書き方は以下のようになります。
1 2 3 4 5 6 7 |
<?php for (初期値; 条件式; 更新式) { //処理内容; } ?> |
それぞれを意味合いを解説します。
・ 初期値:ループカウンター値を初期化します。ループ処理を行う際、最初の値になります。
・ 条件式:ループの繰り返しごとに確認します。
条件式がtrueだった場合、ループは続行されます。
しかし、falseの場合、ループは終了します。
・ 更新式:ループカウンター値を増やします。ループするたびにこの式の処理が行われます。
PHPのfor文の使い方
for文は冒頭でも言いましたが、ループ処理なので、同じ処理を何回も繰り返したい時に使破れます。
for文の基本的なサンプル
次の例では、0から10までの数字を表示するコードとなります。
例
1 2 3 4 5 6 |
<?php for ($num = 0; $num <= 10; $num++) { echo "数字: $num n"; } ?> |
出力結果
数字: 0
数字: 1
数字: 2
数字: 3
数字: 4
数字: 5
数字: 6
数字: 7
数字: 8
数字: 9
数字: 10
上のコードはnumという変数があり、numの値が、10以下の場合ははこのfor文の処理が繰りかえして実行されます。
処理の順番は以下のようになっています。
1. 変数numの初期値が設定される(今回の初期値は0)
2. 条件式(num <=10 )を確認する。
2-1. trueならfor文の括弧内の処理を実行する。
2-2. falseならfor文の括弧の外に抜ける。(5へ移動)
3. trueの場合なら、更新式が実行される。(今回は条件式がtrueになるたびにnumが+1ずつ増えていく)
5. 処理終了
for文でスキップをするサンプル
for文でスキップするにはcontinue文を使用します。
スキップとはその処理を一時的に飛ばすことです。continue文を通るとそれ以降の処理をスキップします。
しかし、ループ処理は実行されます。
UNOとかでもスキップカードがあると思いますが、スキップした場合、そのターンだけ飛ばされますが、次のターンになれば自分の番がきますよね。
プログラムのスキップも同様にcontinue文を使用することで一時的にその処理を飛ばすことができます。
例
1 2 3 4 5 6 7 8 9 10 11 |
<?php for ($num = 0; $num <= 10; $num++) { if ($num == 5) { continue; } echo "数字: $num n"; |
出力結果
数字: 0
数字: 1
数字: 2
数字: 3
数字: 4
数字: 6
数字: 7
数字: 8
数字: 9
数字: 10
変数numが5の場合にcontinue文を通るので、continue文以降に書かれているechoはスキップされます。
ですので、5だけは表示されません。
for文を抜けるサンプル
for文を抜けるにはbreak文を使用します。
抜けるとはその処理を強制的に終了させることです。break文を通ると繰り返し処理から強制的に抜け出します。
ですので、条件式がtrueであってもループ処理は終了します。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php for ($num = 0; $num <= 10; $num++) { if ($num == 5) { break; } echo "数字: $num n"; ?> |
出力結果
数字: 0
数字: 1
数字: 2
数字: 3
数字: 4
条件式は($num <= 10)なので変数numが10まではループ処理が行われます。
しかし、変数numが5になると、break文を通る為、ループ処理を強制的に終了します。
その為、0から4までしか出力されません。
conctinue文とbreak文の認識を間違えないようにしましょう。
for文ネストのサンプル
fo文のネストは一般に「多重ループ」と呼びます。
つまり、二重、三重とネストが深くなるたびにループが多くなります。
ここで、二重ループ、三重ループのサンプルコードを見てみましょう。
二重ループの例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php for($num = 1; $num <= 2; $num++) { echo $num; echo "n"; for($num2 = 1; $num2 <= 5; $num2++) { echo $num2; if ($num2 == 5) { echo "n"; } } } ?> |
出力結果
1
12345
2
12345
続いて三重ループのサンプルコードです。
三重ループの例
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 |
<?php for($num = 1; $num <= 2; $num++) { echo $num; echo "n"; for($num2 = 1; $num2 <= 5; $num2++){ echo $num2; if ($num2 == 5) { echo "n"; for($num3 = 6; $num3 <= 10; $num3++) { echo $num3; if ($num3 == 10) { echo "n"; } } } } } ?> |
出力結果
1
12345
678910
2
12345
678910
for文の応用
次はfor文の応用な使い方を紹介します。
for文を使って表を作成してみます。
for文で表を作成するサンプル1
例
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
<header> <p>フライテック</p> </header> <body> <h1>九九表</h1> <table> <tr> <th> </th> <th>1</th> <th>2</th> <th>3</th> <th>4</th> <th>5</th> <th>6</th> <th>7</th> <th>8</th> <th>9</th> </tr> <?php for ( $i = 1; $i <= 9; $i++ ) { print '<tr>'; print '<th>' . $i . '</th>'; for ( $j = 1; $j <= 9; $j++ ) { print '<td>' . $i*$j . '</td>'; } print '</tr>' . "n"; } ?> </table> </body> <style> body { font-family: Meiryo, sans-serif; } table { border-collapse: collapse; border: 1px solid black; border } th, td { width: 50px; border: 1px dotted black; } th { background: skyblue; } td { text-align: center; } </style> |
出力結果
for文で表を作成するサンプル2
例
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
<header> <p> フライテック</p> </header> <body> <h1>イベントスケジュール</h1> <table> <tr class= "column"> <td>地域</td> <td>日時</td> <td>イベント</td> <td>詳細</td> </tr> </table> </body> <?php $array = array( array( "東京", "1月", "もくもく会", "作業を行う" ), array( "大阪", "2月", "Excel講座", "Excelを学ぶ" ), array( "福岡", "3月", "php講座", "phpを学ぶ" ), array( "愛知", "4月", "無料セミナー", "無料セミナーを行う" ), array( "北海道", "5月", "Webサイト講座", "Webサイトの作り方を学ぶ" ), ); $table = "<table>n"; for ( $i = 0; $i < count( $array ); $i++ ) { $table .= "t<tr>n"; for ( $j = 0; $j < count( $array[$i] ); $j++ ) { $table .= "tt<td>{$array[$i][$j]}</td>n"; } $table .= "t</tr>n"; } $table .= "</table>n"; echo "$table"; ?> <style> body { font-family: Meiryo, sans-serif; } table { border-collapse: collapse; border: 1px solid black; border } th, td { width: 125px; border: 1px dotted black; } tr.column { background: skyblue; } td { text-align: center; } </style> |
出力結果
for文とwhile文の違い
while文とは
while文とはfor文と同じ繰り返し処理を行います。
while文について知りたい方はwhikle文の方で解説してますのでそちらをご参照ください。
また、for文とwhile文の違いについてもwhile文の方で解説しています。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。