2015年10月7日

PHP if構文 応用3 〜 カッコの影響範囲 〜

«
»

Pocket

今回は少し理解が難しいテーマについて書いてみたいと思います。
まずはサンプルプログラムを見てみましょう。
 


<?php
$box = 2;
if ($box == 1) {

	echo "<h1>1でした</h1>";
	echo "<p>こんな感じでHTMLをechoしていきます</p>";

} else {

	echo "<h1>1ではありませんでした</h1>";
	echo "<p>こんな感じでHTMLをechoしていきます</p>";
}

実行結果

php if 影響範囲

解説

これまでの記事を読んでいる方には実行結果に特に違和感は無いと思います。
あえて言うならば、echoの中にh1タグや、pタグなどのHTMLのタグ
含まれていることぐらいでしょうか。
 
h1タグをechoしてあげると、通常のHTML同様、見出しとして表示されます。
 
今は2行分のHTMLをechoしているので特に面倒臭さはありませんが、
これが20行ぐらいのHTMLをechoするとなると、いちいちechoと書くのが
面倒
になります。
 
そこで次のサンプルプログラムを見てみましょう。

サンプルプログラムその2


<?php
$box = 2;
if ($box == 1) {
?>

<h1>1でした</h1>
<p>こんな感じでHTMLをechoしていきます</p>

<?php
} else {
?>

<h1>1ではありませんでした</h1>
<p>こんな感じでHTMLをechoしていきます</p>

<?php
}


実行結果

php if カッコ

解説

実行結果としては1つ目のサンプルプログラムと同じです。
 
ただし、HTMLの部分に注目してもらうと、違いがわかるかと思います。
2つめのサンプルプログラムではechoをしていないのです。
 
スクリーンショット 2015-10-07 8.38.28
 
上図にある通り、PHPでは 「?>」を書くことで、PHPのプログラムを終了させることができます。
ただし、終了後はHTMLのプログラムを書くことができます
 
そして、またPHPのプログラムを再開させることができます。
かなり複雑ですが、
 

PHPの終了

HTMLの記述

PHPの再開

を繰り返すことで、今までいちいちechoで書いていたHTMLを
echo無しでシンプルなHTMLとして記述することができます
 
この時、if文の途中でPHPを終了させても、if文の影響範囲({ } の範囲)
は有効
となります。
 
つまり、$box == 1の時しか 「1でした」は表示されません。
 
かなり複雑ですがこういうものもあるんだと覚えておくといつか
役に立つ時がくるでしょう。

まとめ

・「?>」 でPHPを終了させるとHTMLが書ける
・またPHPを再開させることができる
・PHPを終了させてもif文の影響範囲は続く

【関連する記事】