我应该在 php 脚本中使用哪个语句?回声还是打印?什么更快且最常用?
echo 和 print 都是 PHP 的语言结构(不是函数)。哪个更好取决于您的优先事项。我会考虑三个可能的优先事项: 1. 你提到的速度; 2.你提到了广泛的使用; 3.我会增加灵活性。
速度:正如许多其他人提到的,echo 稍快一些(特别是在使用多参数语法时,元素用逗号分隔),但差异很小,只有在具有数千个循环的代码中才重要,其中速度确实很重要,真的很重要。请参阅 http://www.phpbench.com 了解基准测试。
广泛使用:似乎与传统不同的是,echo 在 PHP 中比 print 更常用。这是相当轶事,但我认为当您从各种来源阅读 PHP 代码时,您会得出相同的结论。
灵活性:我相信 print 在表达代码方面肯定比 echo 更灵活。 Echo 相对于 print 仅有一个“优势”:您可以使用以下语法:
echo $arg1, $arg2, ...
使用逗号列出您的参数; print 不支持逗号语法。但是,您可以用句点 (.) 替换逗号,并在 echo 和 print 中获得完全相同的结果:print $arg1. $arg2. ...
。因此,这种语法在灵活性和表达方面提供了零优势。这是一个微小的优势,因为它会导致更快的代码,正如我在 #1 中提到的,但在 99% 的代码中,这可能并不重要。
相比之下, print 可以做而 echo 不能做的一件事是返回一个值,因此它可以完全充当函数。一方面,它是有限的,因为无论如何 print 总是返回值 1。另一方面,你可以用 print 来做到这一点,但不能用 echo 来做到这一点:
`<?php ($age >= 18) ? print('Can vote.') : print('Cannot vote.'); ?>`
(示例取自 Murach 的 PHP 和 MySQL 2010,第 227 页)
因此, print 几乎可以在代码中表达与 echo 相同的灵活性,但 echo 有一个重要的用例,它无法执行 print 可以执行的操作: print 可以在可能有用的上下文中充当函数。 (我说“充当函数”是因为它不是函数;它是一种语言构造,就像 echo 一样。)
至于简写 echo 语法
<?=$foo?>
(<?php=$foo?>
从 PHP 5.4 开始也适用:https://www.php.net/manual/en/function.echo.php),它可能被称为简写对于“echo”,但您也可以将其称为“print”的简写,因为它只是一种不同的语言结构。正如一些人声称的那样,将其称为回声相对于打印的“优势”是没有逻辑依据的,因为这种结构既不是回声也不是打印——它是一种替代结构,与两者做同样的事情。
就我个人而言,我更喜欢选择一个并始终坚持下去。我个人更喜欢打印,因为它在编码灵活性方面略胜一筹,而且因为“打印”对我来说听起来更直观——这纯粹是主观的。我不在乎 echo 可能被更广泛地使用,因为如果其他人需要阅读我的代码, print 同样可以很好地理解。对于打印速度非常非常重要的那 1% 的代码,我将使用 echo。
据说
echo
更快,但任何一个都可以正常工作。
Echo 还提供了在 HTML 中嵌入 php 时的快捷语法。即
I have <?=$foo?> foo.
对
I have <?php echo $foo;?> foo.
我自己测试过:
$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);
回声约为0.09秒
打印时间约为 0.3 秒至 0.5 秒
它不会影响文本的显示方式,但两者有不同的行为...
例如,
print
返回一个值(true
或false
),具体取决于它是否可以显示要打印的文本;相反,echo
只是给出并继续。
这样做是有效的:
if (print ($variable)) {
//do something
}
这毫无意义:
if (echo $variable) {
//do something
}
回声更快。 echo() 还可以打印 1 个以上的参数,而 print() 只能打印 1 个参数。
echo()
都比print()
快——虽然快不了多少,但加起来就多了。
这里有一些基准测试证明:http://www.phpbench.com向下滚动到“echo vs. print”
IMO 这不是速度问题。如果我正在开发一个应用程序,其中 echo 和 print 之间的速度差异具有重要意义,我会认为这是使用与 PHP 不同(非解释)编程语言的非常明显的标志。
但只要你坚持使用 PHP,这就是 - IMvHO - 只是一个风格问题。顺便说一句,我更喜欢 echo,但只是因为它意味着更少的打字;)
回显多个字符串的最快方法是:
echo "string","string","string";
这甚至不需要执行字符串的串联,它只是一个接一个地回显字符串。
print()
没有任何问题,我认为最终除非您回显数百万行,否则您不会真正看到差异。
echo
可以有两个参数
例如:
echo $x, "\n";
print
仅一个参数
例如:
print "\n";