Tri*_*tio 16
echo和print都是PHP(不是函数)的语言结构.哪个更好取决于您的优先事项.我会考虑三个可能的优先事项:1.你提到速度; 你提到了广泛使用; 我会增加灵活性.
速度:正如许多其他人所提到的,回声稍微快一点(特别是在使用多参数语法时,用逗号分隔的元素),但差别很小,以至于它只在具有数千个循环的代码中很重要,速度确实非常真实事项.有关基准测试,请访问http://www.phpbench.com.
广泛使用:似乎超出传统,回声更常用于PHP而不是打印.这是相当轶事,但我认为当你从各种各样的来源阅读PHP代码时,你会得到同样的结论.
灵活性:我相信在表达代码时print绝对比echo更灵活.Echo只有一个"优势"而不是打印:您可以使用以下语法:echo $arg1, $arg2, ...使用逗号列出您的参数; print不支持逗号语法.但是,您可以用句点(.)替换逗号,并在echo和print中获得完全相同的结果:print $arg1. $arg2. ....因此,这种语法在灵活性和表达方面没有任何优势.这是一个小优势,因为它导致更快的代码,正如我在#1中提到的,但在99%的代码中,这可能无关紧要.
相比之下,打印可以做回声的一件事就是返回一个值,因此它可以完全充当函数.一方面,它是有限的,因为无论如何,print始终返回值1.另一方面,您可以使用print执行此操作,但不能使用echo执行此操作:
<?php ($age >= 18) ? print('Can vote.') : print('Cannot vote.'); ?>
(摘自Murach的PHP和MySQL 2010,第227页)
因此,print可以表达几乎所有与echo相同的代码灵活性,但echo有一个重要的用例,它无法执行print可以执行的操作:print可以在可能有用的上下文中充当函数.(我说"作为一个函数",因为它不是一个函数;它是一个语言结构,就像echo一样.)
至于简写回声语法<?=$foo?>(<?php=$foo?>也适用于PHP 5.4:http://us2.php.net/manual/en/function.echo.php),它可能被称为"echo"的简写,但你可以只是也称它为"印刷"的简写,因为它只是一种不同的语言结构.有些人声称,没有逻辑基础将这称为回声印刷的"优势",因为这种结构既不是回声也不是印刷品 - 它是一种与两者相同的替代结构.
就我个人而言,我更喜欢选择一个并始终坚持下去.我个人更喜欢打印,因为它在编码灵活性方面略微优越,而且"打印"听起来对我来说更直观 - 这纯粹是主观的.我不关心回声是否可能被更广泛地使用,因为如果其他人需要阅读我的代码,也可以很好地理解印刷.对于真正重要的打印速度的1%代码,我会使用echo.
Rya*_*yan 11
据说echo速度更快,但任何一个都可以正常工作.
在HTML中嵌入php时,Echo还提供了一种快捷语法.即
I have <?=$foo?> foo.
Run Code Online (Sandbox Code Playgroud)
VS
I have <?php echo $foo;?> foo.
Run Code Online (Sandbox Code Playgroud)
见http://us2.php.net/manual/en/function.echo.php
它不会影响文本的显示方式,但两者都有不同的行为......
例如,print返回一个值(true或false),具体取决于它是否可以显示要打印的文本; 相反,echo简单地给予和继续.
做这样的事情是有效的:
if (print ($variable)) {
//do something
}
Run Code Online (Sandbox Code Playgroud)
这没有意义:
if (echo $variable) {
//do something
}
Run Code Online (Sandbox Code Playgroud)
我亲自测试过:
$StartTime=microtime(1);
echo '<div style="display:none">';
for($i=0;$i<100000;$i++)
echo "Hello world!<br />";
echo "</div>Echo: ".round(microtime(1)-$StartTime,5);
$StartTime=microtime(1);
echo '<div style="display:none">';
for($i=0;$i<100000;$i++)
print "Hello world!<br />";
echo "</div><br />Print: ".round(microtime(1)-$StartTime,5);
Run Code Online (Sandbox Code Playgroud)
回声是.09s左右.
打印大约.3s到.5s
| 归档时间: |
|
| 查看次数: |
9623 次 |
| 最近记录: |