2015年10月24日

PHP 二重ループを使った図形の作成その2

«
»

Pocket

前回に続いて二重ループを使って図形(四角形)を書いてみたいと思います。
まずは実行結果から御覧ください。

実行結果

php 二重ループ 図形
 
こんな感じで、「*」を用いて、5マス✕5マスの四角形を書くのですが、
前回の図形とは違います。前回の図形はこちら。
 
php 二重ループ 図形
 
今回は周辺だけが「*」になっているようにしたいと思います。
それではサンプルプログラムを見てみましょう。

サンプルプログラム


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

	for($j = 1; $j < 6; $j++){ 
		
		if($i == 1 or $i == 5 or $j == 1 or $j == 5){
			echo "※";	//上の条件に合致する時だけ*を表示
		}else{
			echo " ";	//合致しない時はスペース「 」を表示
		}
		
	}
	echo "<br>"; //改行

}

解説

このプログラムはかなりわかりづらいかもしれません。
色んな書き方がありますが、今回はこんな風にかいてみました。
基本的な考え方はこうです。
 

1行目と5行目は「*****」になる必要がある
2〜4行目は、「*    *」になる必要がある
 
・つまり、2〜4行目は1列目と、5列目だけ「*」になる
・従って、2〜4行目の2〜4列目はスペース「 」になる
 
$i を 行数、$j を 列数と考えてみる
・すると、$i == 1 または、 $i == 5 の時は「*****」になる必要がある
・そして、$j == 1 または、 $j == 5 の時は 「*」を書く
 
・つまり、、$i == 1 または、 $i == 5 または、$j == 1 または、 $j == 5
 の時は「*」
を書く必要がある
それ以外の時はスペースを書く

かなりわかりづらいので、一度紙に書いてみると理解が進むと思います。
いかがでしょうか。

まとめ

・二重ループとif文を使うことで複雑な図形を書くことができる
・わかりづらければ、一度紙に制約条件(ex.1行目と5行目は・・・)を書いてみる

【関連する記事】

    None Found