我应该在php脚本中使用哪种语句?回声还是打印?什么是更快和最常用?提前谢谢。
答案 0 :(得分: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。
答案 1 :(得分:11)
据说echo
更快,但任何一个都可以正常工作。
当在HTML中嵌入php时,Echo还提供了一种快捷语法。即。
I have <?=$foo?> foo.
vs
I have <?php echo $foo;?> foo.
答案 2 :(得分:5)
它不会影响文本的显示方式,但两者都有不同的行为......
例如,print
会返回一个值(true
或false
),具体取决于它是否可以显示要打印的文本;相反,echo
只是给予和继续。
这样做是有效的:
if (print ($variable)) {
//do something
}
这没有意义:
if (echo $variable) {
//do something
}
答案 3 :(得分:5)
我自己测试了一下:
$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);
回声是.09s左右
打印时间约为.3s至.5s
答案 4 :(得分:1)
答案 5 :(得分:0)
echo()
都比print()
更快 - 不是很多,但它会加起来。
以下是一些基准测试证明:http://www.phpbench.com向下滚动到“echo vs print”
答案 6 :(得分:0)
回显多个字符串的最快方法是:
echo "string","string","string";
这甚至不需要执行字符串的串联,它只是回显一个字符串。 print()
没有任何问题,我想在一天结束时,除非你回应数百万行,否则你不会真正看到差异。
答案 7 :(得分:0)
IMO这不是速度问题。如果我正在开发一个应用程序,其中echo和print之间的速度差异具有任何意义,我会认为使用与PHP不同的(不是解释的)编程语言是一个非常明确的标志。
但只要你坚持使用PHP就是 - IMvHO - 只是一个味道问题。顺便说一句,我更喜欢回声,但仅仅因为它意味着更少的打字;)
答案 8 :(得分:0)
echo
可以具有两个参数
例如: echo $x, "\n";
print
仅一个参数
例如: print "\n";