Php 我是否需要将`endif`放在每个`if`条件语句下面,或者可以将它们组合在整个Blog循环的底部?

Php 我是否需要将`endif`放在每个`if`条件语句下面,或者可以将它们组合在整个Blog循环的底部?,php,wordpress,if-statement,Php,Wordpress,If Statement,我刚刚在页面模板中插入了以下代码: <?php //First Loop $testBlog = new WP_Query( 'type=post&posts_per_page=1' ); if ( $testBlog->have_posts() ): while( $testBlog->have_posts() ): $testBlog->the_post();

我刚刚在页面模板中插入了以下代码:

<?php   
//First Loop    
    $testBlog = new WP_Query(
        'type=post&posts_per_page=1' 
    );  

        if ( $testBlog->have_posts() ):
            while( $testBlog->have_posts() ): $testBlog->the_post(); 
                get_template_part('format',get_post_format());      
            endwhile; 
            wp_reset_postdata();

    //Second Loop
        $newTestBlog = new WP_Query(
            'type=post&posts_per_page=3&offset=0'
        );

            if ( $newTestBlog ->have_posts() ):
                while( $newTestBlog ->have_posts() ): $newTestBlog ->the_post(); 
                    get_template_part('format',get_post_format());      
                endwhile;
                wp_reset_postdata();
            endif;  

        endif;
?>

可以用2个
endif
s结束上述代码吗,因为有2个
if
条件语句,或者在运行下一个条件语句之前,需要将
endif
s直接放在其关联的条件语句下面吗


此外,我还将
testBlog
newTestBlog
放入了代码中,因为我觉得它们需要解压。是这样还是可以复制?

首先,如果使用
if(表达式):
还需要end
endif始终。它相当于一个
{
,您也必须使用
}
关闭它

但是
endif语法应主要用于HTML代码的上下文,而不是仅用于PHP代码:

<?php if ($header == true): ?>
    <h1>Header</h1>
<?php else: ?>
    <p>paragraph</p>
<?php endif; ?>
while(表达式)也是如此:
endwhile

下面是您编写代码的方式:

<?php

$testBlog = new WP_Query('type=post&posts_per_page=1');

if ($testBlog->have_posts()) {

    while ($testBlog->have_posts()) {

        $testBlog->the_post();
        get_template_part('format', get_post_format());
    }

    wp_reset_postdata();

    $newTestBlog = new WP_Query('type=post&posts_per_page=3&offset=0');

    if ($newTestBlog->have_posts()) {

        while ($newTestBlog->have_posts()) {

            $newTestBlog->the_post();
            get_template_part('format', get_post_format());
        }

        wp_reset_postdata();
    }
}

是的,可以使用两个endifs。每个endif将对应于它遇到的上面的第一个if条件,该条件没有被另一个endif关闭。

“但是endif;语法应该主要用于HTML代码上下文中,而不仅仅是PHP代码”为什么?没有技术原因,但代码可读性更高,这样的问题不会出现。这就是为什么它被认为是良好的开发人员实践。见UpdateWell,这是一个意见问题。我在问关于“应该”的问题。PSR-2似乎对这件事一无所知?我的第一句话是you awnser,其余的是你所说的PHP开发者社区的官方意见
<?php

$testBlog = new WP_Query('type=post&posts_per_page=1');

if ($testBlog->have_posts()) {

    while ($testBlog->have_posts()) {

        $testBlog->the_post();
        get_template_part('format', get_post_format());
    }

    wp_reset_postdata();

    $newTestBlog = new WP_Query('type=post&posts_per_page=3&offset=0');

    if ($newTestBlog->have_posts()) {

        while ($newTestBlog->have_posts()) {

            $newTestBlog->the_post();
            get_template_part('format', get_post_format());
        }

        wp_reset_postdata();
    }
}
<?php

$testBlog = new WP_Query('type=post&posts_per_page=1');

if ($testBlog->have_posts()) {

    while ($testBlog->have_posts()) {

        $testBlog->the_post();
        get_template_part('format', get_post_format());
    }

    wp_reset_postdata();
}

$newTestBlog = new WP_Query('type=post&posts_per_page=3&offset=0');

if ($newTestBlog->have_posts()) {

    while ($newTestBlog->have_posts()) {

        $newTestBlog->the_post();
        get_template_part('format', get_post_format());
    }

    wp_reset_postdata();
}