[php] endを使った制御構文|endif endfor endwhile endforeach endswitch

公開
更新日

スポンサーリンク

phpを使い始めた当初、if:~endif;のようなendを使った制御構文のことを知らなくて、初めて見たときはびっくりした。WordPressがバージョン2.7くらいの時に、テーマファイルをいじろうとしたのがその存在を知ったきっかけ。WordPressってif:~endif;とかすごくよく使ってる。なんだこりゃって思ったね。その頃は違和感しか感じなかったので、自分で書き換える時には{}にしていた。

が、最近はendを使って書くのもいいなと思うようになってきた。コーディング規約で決められているならそれに従わなければならないが、そうでない時は状況によっては積極的に使っている。htmlとphpが混在したコードを書かねばならない時に分かりやすいというのが一つ。他に、入れ子になったり{}の中が長くなった時にも、endを使った方が分かりやすいように思う。

以下はendを使った制御構文のまとめ。

if文

if( $foo ):
	echo "カッコの後ろはセミコロン;ではなくコロン:";
endif;

if-else文

phpのelseifは、普通にカッコを使う場合はelse ifのように、elseとifの間にスペースがあっても構わない。しかしendifを使う場合、else if():はエラーになる。スペースは使わず、elseif():と書かねばならない。

if( $foo === "bar" ):
	echo "hello world !";
elseif( $foo === "hoge" ):
	echo "hello wooooorld !";
else:
	echo "hello woooooooooooooorld !!!!!!";
endif;

for文

for($i=0;$i<10;$i++):
	echo "hello w" . str_repeat( 'o' , $i ) . "rld";
endfor;

while文

while( $foo ):
	echo "hello world !";
endwhile;

なお、do-while文にはendを使う書き方は存在しない。

foreach文

foreach( $foo as $bar => $hoge ):
	echo "hello " . $hoge . " !";
endforeach;

switch文

switch文でもendswitchが使える。switch文の場合もともとcaseのところでコロンを使っているわけで、switch():~endswitch;を使っていないのが不思議なくらいだ。

switch( $foo ):
	case "bar":
		echo "hello world !";
		break;
endswitch;

スポンサーリンク


Comment


  1. ななし : 投稿日:2015年5月14日 7:03 PM

    参考になりました!
    最後、タイポみたいです
    endwwitch→endswitch

  2. 管理人 : 投稿日:2015年5月31日 1:27 PM

    >> 1
    ご指摘ありがとうございました。修正しました。