只是为了澄清:“echo vs print”和“双引号与单引号”这两个问题完全可以理解,这是关于另一个的事情:
有什么理由可以选择:
echo '<table>';
foreach($lotsofrows as $row)
{
echo '<tr><td>',$row['id'],'</td></tr>';
}
echo '<table>';
在:
<table><?php
foreach($lotsofrows as $row)
{ ?>
<tr>
<td><?php echo $row['id']; ?></td>
</tr><?php
} ?>
</table>
会更快地执行/解析吗?更优雅? (等)
我倾向于使用第二种选择,但我担心我可能会忽略一些明显/必要的东西。
答案 0 :(得分:9)
第一个的好处
第二个的好处
如果我在给定的PHP例程(如MVC视图)中有很多HTML,那么我肯定会使用第二种方法。但我的格式不同 - 我严格依赖于PHP分界的标签性质,即,我使PHP部分看起来像HTML标签一样
<table>
<?php foreach($lotsofrows as $row) { ?>
<tr>
<td><?php echo $row['id']; ?></td>
</tr>
<?php } ?>
</table>
答案 1 :(得分:9)
我同意Peter Bailey的观点。但是,在视图中,我使用语句的替代语法,并且更喜欢短标记(特别是对于回显)。所以上面的例子将改为:
<table>
<? foreach($lotsofrows as $row): ?>
<tr>
<td><?= $row['id']; ?></td>
</tr>
<? endforeach; ?>
</table>
我相信这是Zend Framework的首选标准。
答案 2 :(得分:5)
第一个在我看来更具可读性,但是,第二个在技术上涉及较少的解析。在这种情况下,任何速度优势都可能是次要的,如果没有剖析,它将毫无意义。
过早优化是万恶之源。做什么使代码最容易阅读和维护。效率在可维护性方面处于次要地位。
请参阅http://en.wikipedia.org/wiki/Optimization_%28computer_science%29#When_to_optimize,了解有关该主题的一些好建议
答案 3 :(得分:2)
最好的是模板引擎。
但是,我认为回声更清晰,更易读(至少在这种情况下 - 正如评论所指出的那样,取决于),而不是在任何地方打开和关闭标签(我不太了解PHP内部到但是,告诉哪一个更快。
答案 4 :(得分:2)
你写的很可靠。 PHP可以用作编程语言,也可以用作简单而强大的Web模板语言。将这两种方法混合使用非常非常糟糕的做法,并且长期支持将是可怕的。
所以第二种风格更适用于带有大量html标记和少量代码的模板,首先是“清晰”的php编程。
答案 5 :(得分:2)
从编程的角度来看,第一个可读性更强,但第二个允许您在某些WYSIWYG HTML编辑器中打开文件并更改页面设计。
我更喜欢第二个选项,因为告诉你的设计师“页面的这一部分会表现得那样”比“这段代码那样”更容易