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

发布于 2024-11-18 08:27:05 字数 527 浏览 2 评论 0原文

现在,我有这样的事情:

<?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 语句我想知道这是否是一个不好的做法。如果是,我该如何清理这段代码?

Right now, I have something like this:

<?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; ?>

There are 3 nested if-statements I would like to know if this is a bad practice. If it is, how can I clean this code?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

冷弦 2024-11-25 08:27:05

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

另外,绝对不鼓励打开无用的 处理指令并使用不常见的 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>';
}
?>

It is if the conditions are very simple and their are no else cases.

Also, opening useless <?php processing instructions and using the uncommon endif form instead of braces are definitely not encouraged. Instead, write:

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

...如果您需要
超过 3 级的缩进,你就完蛋了......
- Linus Torvalds

你所做的很好。一般来说,您最关心的应该是您的代码是否可读,而不是您使用了多少层嵌套。

...if you need
more than 3 levels of indentation, you're screwed...
- Linus Torvalds

It's fine what you've done. In general your firstmost care should be whether your code is readable, not how many levels of nesting you use.

生生漫 2024-11-25 08:27:05

重复标记当然是一个坏主意。如果你想改变一些东西,例如添加一个类,你必须在两个地方做。

在某些情况下,当您只想根据条件分配值时,可以使用三元运算符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; ?>

It is certainly a bad idea to repeat markup. If you want to change something, add a class for example, you have to do it in two places.

In some cases, when you just want to assign a value based on a condition, you can use the ternary operator (condition ? iftrue : iffalse), just never nest it.

<?php if ( ! is_front_page() && $count >= 1  ) : ?>
    <h2 class="dark-title">
         <?php _e( $count == 1 ? 'Top Reply (Latest)' : 'Top Replies (Latest)' ); ?>
    </h2>
<?php endif; ?>
牵强ㄟ 2024-11-25 08:27:05

这很常见。如果您想清理代码,请将内容重构为单独的函数/方法。在您的具体情况下,您还可以通过执行 if($count == 1) 然后执行 elseif($count > 1) 来摆脱一个嵌套。

It's fairly common. If you want to clean up the code, refactor stuff into separate functions/methods. In your specific case you could also get rid of one nesting by doing if($count == 1) and then elseif($count > 1).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文