PHPのfor文のループで図形を作成するコードをまとめてみました。
応用して組み合わせると、さまざまな図形を作成できます。
はじめに(行数の制御)
全体で3行の図形を作成したいとき
for($a = 1; $a <= 3; $a ++){ // ここに各行のコードを記述していく echo '<br>'; //各行ごと改行する }
1.階段式
1 12 123
と表示したいときは
for($b = 1; $b <= $a; $b++){ echo $b; }
1行目の
1周目は、b=1で$b<=$a(1<=1)が真となるため、$bが表示される。
2周目は、b=2で$b<=$a(2<=1)が偽となるため、表示されずループは終了する。
そのため1行目は「1」のみ表示される。2行目の
1周目は、b=1で$b<=$a(1<=2)が真となるため、$bが表示される。
2周目は、b=2で$b<=$a(2<=2)が真となるため、$bが表示される。
3周目は、b=3で$b<=$a(3<=2)が偽となるため、表示されずループは終了する。
そのため2行目は「12」が表示される。3行目の
1周目は、b=1で$b<=$a(1<=3)が真となるため、$bが表示される。
2周目は、b=2で$b<=$a(2<=3)が真となるため、$bが表示される。
3周目は、b=3で$b<=$a(3<=3)が真となるため、$bが表示される。
4周目以降(今回はa<=3までのため)は、$b<=$a(4<=3)が偽となり表示されず、ループは終了する。
そのため3行目は「123」が表示される。
数字を降順にする
1 21 321
と表示したいときは
for($c = 3; $c >= 4-$a; $c--){
echo $c-(3-$a);
}
1行目の
1周目は、c=3で$c>=4-1が真となるため、3-(3-1)で1が表示される。
2周目は、c=2で$c<=4-1が偽となるため、表示されずループは終了する。
そのため1行目は「1」のみ表示される。2行目の
1周目は、c=3で$c>=4-3が真となるため、3-(3-2)で2が表示される。
2周目は、c=2で$c<=4-2が真となるため、2-(3-2)で1が表示される。
3周目は、c=1で$c<=4-2が偽となるため、表示されずループは終了する。
そのため2行目は「21」が表示される。3行目の
1周目は、c=3で$c>=4-3が真となるため、3-(3-3)で3が表示される。
2周目は、c=2で$c>=4-3が真となるため、2-(3-3)で2が表示される。
1周目は、c=1で$c>=4-3が真となるため、1-(3-3)で1が表示される。
4周目以降(今回はa<=3までのため)は、$c>=4-3が偽となりループは終了する。
そのため3行目は「321」が表示される。
ピラミッドを降順にする
123 12 1
と表示したいときは
for($d = 1; $d >= 4-$a; $d++){
echo $d;
}
1行目の
1周目は、d=1で$d>=4-1が真となるため、$dが表示される。
2周目は、d=2で$d<=4-1が真となるため、$dが表示される。
3周目は、d=3で$d<=4-1が真となるため、$dが表示される。
4周目以降(今回はa<=3までのため)は、$d<=4-1が偽となるため、表示されずループは終了する。
そのため1行目は「123」が表示される。2行目の
1周目は、d=1で$d>=4-2が真となるため、$dが表示される。
2周目は、d=2で$d<=4-2が真となるため、$dが表示される。
3周目は、d=3で$d<=4-2が偽となるため、表示されずループは終了する。
そのため2行目は「12」が表示される。3行目の
1周目は、d=1で$d>=4-3が真となるため、$dが表示される。
2周目は、d=2で$d<=4-3が偽となるため、表示されずループは終了する。
そのため3行目は「1」のみ表示される。
ピラミッドと数字を降順にする
321 21 1
と表示したいときは
for($e = 4-$a; $e >= 1; $e--){
echo $e;
}
1行目の
1周目は、e=4-1で3>1が真となるため、$eが表示される。その後デクリメントされてe=2となる。
2周目は、e=2で2=>1が真となるため、$eが表示される。 その後e=1となる。
3周目は、e=1で1=>1が真となるため、$eが表示される。 その後e=0となる。
4周目以降(今回はa<=3までのため)は、$e>=1が偽となるため、表示されずループは終了する。
そのため1行目は「321」が表示される。2行目の
1周目は、e=4-2で2>1が真となるため、$eが表示される。その後e=1となる。
2周目は、e=1で1=>1が真となるため、$eが表示される。 その後e=0となる。
3周目は、$e=>1が偽となるため、表示されずループは終了する。
そのため2行目は「21」が表示される。3行目の
1周目は、e=4-3で1>1が真となるため、$eが表示される。その後e=0となる。
2周目は、$e=>1が偽となるため、表示されずループは終了する。
そのため3行目は「1」のみ表示される。
2.文字数は固定する
123 456 789
と表示したいときは
$z = 1; for($x = 1; $x <= 3; $x ++){ //行数を制御 for($y = 1; $y <= 3; $y ++){ //文字数を制御 echo $z; $z ++; //zを1ずつ増加させる } echo '<br>'; //行ごとに改行
- 数字を降順にしたいときは、
$z=9;と定義して、デクリメントに変える。