拥有太多嵌套的PHP if语句是不好的做法?

时间:2011-06-30 08:08:31

标签: php if-statement

现在,我有这样的事情:

<?php if ( ! is_front_page() ) : ?>
    <?php if ( $count >= 1 ) : ?>
        <?php if ( $count == 1 ) : ?>
            <h2 class="dark-title"><?php _e( 'Top Reply (Latest)' ); ?></h2>
        <?php else : ?>
            <h2 class="dark-title"><?php _e( 'Top Replies (Latest)' ); ?></h2>
        <?php endif; ?>
    <?php endif; ?>
<?php endif; ?>

如果这是一个不好的做法,我想知道3个嵌套的if语句。如果是,我该如何清理此代码?

4 个答案:

答案 0 :(得分:2)

如果条件非常简单并且没有其他情况。

此外,绝对不鼓励打开无用的<?php处理说明并使用不常见的endif表单而不是大括号。相反,写一下:

<?php
if (!is_front_page() && ($count >= 1)) {
    echo '<h2 class="dark-title">';
    echo _e(($count==1) ? 'Top Reply (Latest)' : 'Top Replies (Latest)');
    echo '</h2>';
}
?>

答案 1 :(得分:1)

  

......如果你需要的话   超过3级压痕,你搞砸了......     - Linus Torvalds

你做得很好。一般来说,您最关心的应该是您的代码是否可读,而不是您使用的嵌套级别。

答案 2 :(得分:1)

重复加价肯定是一个“好主意”。如果你想改变一些东西,例如添加一个类,你必须在两个地方做。

在某些情况下,当您只想根据条件分配值时,可以使用三元运算符condition ? iftrue : iffalse),而不是嵌套它。

<?php if ( ! is_front_page() && $count >= 1  ) : ?>
    <h2 class="dark-title">
         <?php _e( $count == 1 ? 'Top Reply (Latest)' : 'Top Replies (Latest)' ); ?>
    </h2>
<?php endif; ?>

答案 3 :(得分:0)

这很常见。如果要清理代码,请将内容重构为单独的函数/方法。在你的具体情况下,你也可以通过if($ count == 1)和thenif($ count&gt; 1)来摆脱一个嵌套。