输出html与使用echo有什么不同吗?

问题描述:

我不知道真的怎么说,但我可以证明它:输出html与使用echo有什么不同吗?

<?php 
if (true) { 
echo "<h1>Content Title</h1>"; 
} 
?> 

VS

<?php if (true) { ?> 
<h1>Content Title</h1> 
<?php } ?> 

两者之间有什么区别?会不会有使用回声造成的问题?编写echo“html代码”似乎非常繁琐;所有的时间,特别是对于更大的HTML段。

另外,对可以更好地更改我的问题的人给予奖励。 :)

+1

我个人*讨厌*输出大块文字时使用回声,但YMMV。 ;)你可能会遇到一些转义角色的问题,但我想不出其他的。 – Illianthe 2011-01-29 01:34:46

+0

不确定是否有任何_real_差异。对我而言,第一个使用起来更麻烦(转义引号和其他字符),但在6个月后查看代码时比第二个更容易阅读。 – aqua 2011-01-29 01:35:56

有两种情况之间的微小差异:

<?php 
if (true) { 
    echo "<h1>Content Title</h1>"; 
} 
?> 

在这里,因为你在你的字符串使用double quotes,可以插入变量,并有自己的价值观呈现。例如:

<?php 
$mytitle = 'foo'; 
if (true) { 
    echo "<h1>$mytitle</h1>"; 
} 
?> 

而在第二个例子中,你必须有回音封闭在一个PHP代码块:

<?php if (true) { ?> 
    <h1><?php echo 'My Title'; ?></h1> 
<?php } ?> 

就个人而言,我用的是相同的格式,你的第二个例子,有a bit of a twist

<?php if (true): ?> 
    <h1><?php echo $mytitle; ?></h1> 
<?php endif; ?> 

我发现它增加了可读性,尤其是当你有嵌套控制语句。

性能方面没有相关差异。但是你不能在后者中使用变量,而且它看起来不那么干净。对于大块,跟踪{}结构也变得非常困难。

这就是为什么下面的替代符号存在:

<?php if (true): ?> 
<h1>Content Title</h1> 
<?php endif; ?> 

它稍微更具可读性。

+1

其实,有一个性能差异(见http://www.codingforums.com/archive/index.php/t-117488.html) – 2011-01-29 01:36:22

+0

@Rafe true ...但可以说不是一个巨大的*一个(20ms为50 Lorem Ipsum的段落,这远远超过一个普通的HTML页面将永远包含) – 2011-01-29 01:42:32

此:

<?php if (true) : ?> 
    <h1>Content Title</h1> 
<?php endif; ?> 

这是PHP应该被使用的方式。
不要echo HTML。这很乏味,尤其是因为你必须逃避某些角色。

可能会有轻微的性能差异,以上可能会更快。但它根本不重要。否则,没有区别。

我很欣赏所有的反馈。 :)

当使用两种不同的方法时,我确实发现了一些问题。

这里似乎没有任何真正的问题,除了格式在源代码和繁琐的特性上看起来很糟糕。

<?php 
if (true) { 
echo "<h1>Content Title</h1>"; 
} 
?> 

使用PHP这样可能导致错误这样 警告:不能更改头信息 - 头已经发出已

<?php if (true) { ?> 
<h1>Content Title</h1> 
<?php } ?> 

的标题错误都不可能通过使用PHP,像这样

来解决
<?php ob_start(); if (true) { ?> 
<h1>Content Title</h1> 
<?php } ob_end_flush(); ?> 

至于为什么和何时发送标题,我不完全确定...