有人可以解释这段PHP代码吗?

时间:2014-11-02 02:50:29

标签: php

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

如果have-posts()为真,那么......我不理解:的位置。

3 个答案:

答案 0 :(得分:3)

在PHP中,有两种方法可以编写复合语句,如ifwhile实体。您可以使用{ ... }包围身体:

while (condition) {
    body
}

或者您可以使用:endXXX声明:

while (condition) :
    body
endwhile;

您的代码使用第二种形式。当在体内与<?php ... ?>混合时,它是一种非常常见的风格,因此块的结尾比以下更突出:

<?php } ?>

答案 1 :(得分:1)

这些功能是Wordpress允许您操纵存储在数据库中的帖子的功能。

:只是一种替代语法,:替换while中的花括号。

http://codex.wordpress.org/The_Loop_in_Action

  
      
  1. 首先,它检查是否发现了任何帖子   have_posts()函数。
  2.   
  3. 如果有任何帖子,则启动PHP while循环。一个循环   只要括号中的条件将继续执行   在逻辑上是正确的。所以,只要函数have_posts()返回   一个真值,while循环将保持循环(重复)。
  4.   

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

  

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

答案 2 :(得分:0)

这是使用whilehttp://php.net/manual/en/control-structures.while.php

的无括号替代语法

因此,上面的代码与此相同:

if ( have_posts() ) {
   while ( have_posts() ){
     the_post();
     the_content();
   }
}