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ファイルだと地味に嵌りそうだから記事にしてみた。

コメント

このブログの人気の投稿

Vue.jsでimgタグのsrcをバインドさせる際の注意点

Windowsコマンドプロンプトをかっこよくする

vscodeとPlantUMLでロバストネス図を書く