2

我想知道 if 语句的以下 2 种语法之间是否存在任何性能差异(对于其他循环类似 - while、for、foreach 等):

 if(..) {...}
 else {...}

if(..) : ...
else : ... 
endif;

使用其中一个有什么优势吗?

4

4 回答 4

3

您通常在视图(模板)中使用替代语法 ( if (condition): endif;),因为它更易于在 HTML 中阅读。例如:

<?php foreach ($items as $item): ?>
<article class="item">
  <h1><?php echo $item->title; ?></h1>
</article>
<?php endforeach; ?>

比以下更容易阅读:

<?php foreach ($items as $item) { ?>
<article class="item">
  <h1><?php echo $item->title; ?></h1>
</article>
<?php } ?>

特别是当您添加更多控制结构时,例如iffor。如果您在 HTML 中使用大括号,则很难区分哪个右大括号属于哪个左大括号,而使用您知道的替代语法endif正在寻找一个开幕词if:

希望有帮助。

于 2012-09-21T18:00:17.797 回答
3

没有任何。

语法样式仅用于代码的可读性。不同的组织可能更喜欢不同的风格,但对性能没有影响。

于 2012-09-21T17:57:12.233 回答
1

就个人而言,我只if():在混合 PHP 和 HTML 时使用语法:

<div class="stuff">
    <?php if($a === $b): ?>
        <span>Hello</span>
    <?php else: ?>
        <input type="checkbox" />
    <?php endif; ?>
</div>

我认为这看起来比 using 更好if(){,但是在“普通” php 代码(不与 HTML 混合)中,我使用if(){语法。

<?php
if($a === $b){
    runThisCode();
}
else{
    otherCode();
}
?>
于 2012-09-21T18:00:11.423 回答
0

不,只有语法没有性能差异。我个人将第一个用于核心逻辑,并在视图中或当 php 与 html 交互或输出 html 时使用第二个示例。因为我发现在不添加\n \t.

所以除了可读性之外没有任何优势。

于 2012-09-21T18:02:31.777 回答