2015年10月22日

PHP 二重ループ

«
»

Pocket

今回からforやwhileを使った「二重ループ」について
書いていきたいと思います。
カテゴリーとして「応用」としていますので、結構難しいと思います。
自分でプログラムを書きながら、他のサイトも参考にして読んでもらえればと思います。

二重ループとは

PHP 二重ループ
 
二重ループとはforやwhileなどの繰返し処理の{}の内側で
さらに繰返し処理が記述されているもの
を言います。
 
これが、三重、四重となることもありますので、一般に多重ループと呼びます。
1つサンプルをみてみましょう。
 


<?php
for($i = 1; $i < 10; $i++){

	for($j = 1; $j < 10; $j++){ //$iじゃなくて、$jであることに注意!

		echo $i;
		echo $j; //改行が無いと続けて表示されます。
		echo "<br>"; //改行

	}

}

実行結果

PHP for 二重ループ

解説

結果としては11〜99までの数値が表示されると思います。
※ちなみに、二重ループを使う必要はないプログラムですが、
あくまで理解を助けるためのサンプルです。
 
これはfor文の{}の中にまたfor文が記述されているので、二重ループ
なります。
 
内側のfor文の変数が「$j」(i の次で j)となっていることに注意して下さい。
どうしてこういう結果になるのかわかりやすく説明したいと思います。
 

1.まず、for($i = 1; ・・・ の繰返し処理が始まります
 
 
2.次に、for($j = 1; ・・・ の繰返し処理が始まります
 
 
3.表示はこのようになります
 
3-1. $i=1 , $j=1 なので、11と表示されます
 
3-2. for($j = 1; ・・・ の繰返し処理中なので $j が $j++ されます
 
3-3. $i=1 , $j=2 なので、12と表示されます
 
3-4. for($j = 1; ・・・ の繰返し処理中なので $j が $j++ されます
 
3-5. $i=1 , $j=3 なので、13と表示されます
 
3-6. こんな感じで $jが10になると $j < 10を満たさず、内側のループを抜けます

 

3-7. for($i = 1; ・・・ の繰返し処理中なので $i が $i++ されます
 
   「$i」の方であることに注意!
 
3-8. for($j = 1; ・・・ の繰返し処理が始まります。また$jは1から始まります
 
3-9. $i=2 , $j=1 なので、21と表示されます
 
3-10. for($j = 1; ・・・ の繰返し処理中なので $j が $j++ されます
 
3-11. $i=2 , $j=2 なので、22と表示されます
 
3-12. こんな感じで $jが10になると $j < 10を満たさず、内側のループを抜けます

 

3-13. for($i = 1; ・・・ の繰返し処理中なので $i が $i++ されます
 
   「$i」の方であることに注意!
 
3-14. for($j = 1; ・・・ の繰返し処理が始まります。また$jは1から始まります
 
3-15. $i=3 , $j=1 なので、31と表示されます
 
3-16. for($j = 1; ・・・ の繰返し処理中なので $j が $j++ されます
 
3-17. $i=3 , $j=2 なので、22と表示されます
 
3-18. こんな感じで $jが10になると $j < 10を満たさず、内側のループを抜けます

 

3-19. こんな感じで $iが10になると $i < 10を満たさず、「外側のループ」を抜けます

いかがでしょうか。
一言で書くと、内側のループを、外側のループ回数分繰り返す
※内側=jの方、外側=iの方

という形になります。
 
日常生活で考えると、1日3記事のブログを書くことを(3回のループ)を
10日間続けて(10回のループ)下さい
、と言われるような感覚でしょうか。
 
この時、内側のループが「1日3記事のブログを書く」ということになり、
外側のループが「10日間続けて」ということになります。

まとめ

・繰返し処理の{}の内側に繰返し処理があるものを二重ループと呼ぶ
・三重、四重になることもあり、多重ループと呼ばれる
・日常生活でいうと1日3記事のブログを書くことを(3回のループ)を
 10日間続けて(10回のループ)下さい、というイメージになる

【関連する記事】

    None Found