サポート » 使い方全般 » endifの省略?なのでしょうか?

  • 解決済 pyonko

    (@pyonko)


    いつもお世話になっております。
    twentytenでは、single.phpからloop-single.phpをインクルードしてします。loop-single.phpの最初の辺りで、

    <?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>

    となっていて、最後の行で、

    <?php endwhile; // end of the loop. ?>

    となっていますが、最初のifに対するindif;はどこにあるのでしょうか?

    大変基本的な質問で恐縮ですが、よろしくご教示いただければ幸いです。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック投稿者 pyonko

    (@pyonko)

    indif;
    ではなく
    endif;
    でした。

    shiny_cloud

    (@shiny_cloud)

    最初のifに対するindif;はどこにあるのでしょうか?

    省略形です。

    http://nyx.pu1.net/reference/basic/phptag.html#omission

    トピック投稿者 pyonko

    (@pyonko)

    コメントありがとうございます。
    紹介いただいたphpのサイトですが、

    <?php if ( ・・・・ ) : ?>

    という形式で書いた場合には、対向して、

    <?php endif; ?>

    が必要と理解していたのですが、これを省略可能であるとするところが読み取れませんでした。

    <?php while ( have_posts() ) : ?>

    に対しては、

    <?php endwhile; // end of the loop. ?>

    となっていて確かにループの終了に対してはendwhile;があります。
    どういう場合に、

    <?php endif; ?>

    が省略可能なのか、今一つスッキリしないのです。

    wokamoto

    (@wokamoto)

    これは PHP の構文の話になるのですが…

    通常 if() 文は、以下のように書きます。

    if ( 条件 ) {
        処理
    }

    または、

    if ( 条件 ) :
        処理
    endif;

    ただし、処理がひとつしかない場合は、以下のように ‘{‘,’}’ や ‘:’,’endif;’ を省略することができます。

    if ( 条件 )
        処理

    ここでは、while ( have_posts() ) : the_post(); から endwhile; までを、一つの処理として扱うことができるので、if ( have_posts() ) に対応する ‘:’,’endif;’ を省略することができます。

    個人的な見解では、後々メンテする時に分かりづらくなるので、省略しない方が良いとは思いますが…

    トピック投稿者 pyonko

    (@pyonko)

    コネントありがとうございました。
    loop-single.phpで該当部分はけっこう長いけど、よく見れば一つの処理、なのですね。
    これでスッキリしました。

    ありがとうございました。

    wokamoto

    (@wokamoto)

    おっ、良かったです。

    ついでに、このトピックは「解決」に変更しておいてください。

    トピック投稿者 pyonko

    (@pyonko)

    すみません。うっかりしてました。
    ありがといございました。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「endifの省略?なのでしょうか?」には新たに返信することはできません。