PHPの "if():" タイプの注意点
PHPでのif文は3通りの書き方がある。
1つ目は、
if ( $check ) {
echo 'Good!';
} else {
echo 'Bad.';
}
の様に中括弧を使う方法。
2つ目は、
<?php
if ( $check )
echo 'Good!';
else
echo 'Bad.';
の様に括弧を省略する方法。この場合 有効な行は
if
の次の行の1行だけ という事に注意しましょう。
そして3つ目が、
<?php
if ( $check ) :
echo 'Good!';
else :
echo 'Bad.';
endif;
の様に、
if(): 〜 endif;
のパターン。
WordPress等ではお馴染みですね。開始と終わりがわかりやすいのでHTMLと混在したファイルなどでよく使用されます。
このパターンを使う場合注意点が 2つ あり、1つ目は、
else if :
の様にelseとifを分割してはいけない、 という事。
2つ目は、
- elseifをネストする場合、中のif文も
if() :
形にしなければならない、 という事。
例えば、
<?php
$a = true;
$b = 5;
$c = 'aaa';
if ($a) :
if ($b == 5)
echo 'OK';
elseif ($c == 'aaa') :
echo 'aaa';
endif;
この様な書き方は
PHP Parse error: syntax error, unexpected ':' in /home/user/dev/tmp/test.php on line 8
と、エラーになります。(波括弧でもダメ)
正しくは、
<?php
$a = true;
$b = 5;
$c = 'aaa';
if ($a) :
if ($b == 5) :
echo 'OK';
endif;
elseif ($c == 'aaa') :
echo 'aaa';
endif;
HTMLと混在した長いPHPファイルだと地味に嵌りそうだから記事にしてみた。
コメント
コメントを投稿