Wordpress PHP语法循环很奇怪

时间:2015-01-22 19:27:53

标签: php wordpress

我无法理解这段代码。我得到了' wordpress-loop'的基础知识。但我不明白这种语法是什么。它几乎看起来像一个三元运算符。

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

            <h1><?php the_title() ;?></h1>  
            <?php the_content(); ?>

        <?php endwhile; else: ?>

            <p>Sorry, this page does not exist</p>

        <?php endif; ?>

特别是这一行..

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

这是说好的如果有帖子,我们有帖子,显示帖子?但是:&#39; s表示什么呢?

2 个答案:

答案 0 :(得分:4)

它是PHP alternative syntax的控制结构:

  

PHP为其某些控制结构提供了另一种语法;   即,if,while,for,foreach和switch。在每种情况下,基本的   替代语法的形式是将左大括号更改为冒号   (:)和endif的结束括号;,endwhile;,endfor;,endforeach;,   或者endwitch;分别。

示例:

if (condition) : 

endif;

与:

相同
if (condition) {

}

具体来说,WordPress说:如果我们有帖子,请遍历每个帖子,然后获得帖子。

这是一个明确的缩进版本:

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

            <h1><?php the_title() ;?></h1>  
            <?php the_content(); ?>

        <?php endwhile; ?>
    <?php else: ?>

        <p>Sorry, this page does not exist</p>

    <?php endif; ?>

答案 1 :(得分:0)

http://php.net/manual/en/control-structures.alternative-syntax.php

  

PHP为其某些控制结构提供了另一种语法;即,if,while,for,foreach和switch。在每种情况下,替代语法的基本形式是将左大括号更改为冒号(:),并将结束大括号分别更改为endif;,endwhile;,endfor;,endforeach;或endswitch;。