在PHP脚本中,我应该使用哪个语句?Echo还是Print?哪个更快速且更常用?谢谢提前。
echo和print都是PHP的语言结构(而不是函数)。哪个更好取决于你的优先考虑因素。我会考虑三个可能的优先考虑因素:1. 你提到了速度;2. 你提到了广泛使用;3. 我会加上灵活性。
速度:正如其他人提到的,echo稍微快一些(特别是在使用多参数语法时,元素之间用逗号分隔),但差异如此微小,只有在有成千上万个循环的代码中才会真正有所影响。请参考http://www.phpbench.com进行基准测试。echo $arg1, $arg2, ...
使用逗号列出参数;print不支持逗号语法。然而,你可以用句点(.)替代逗号,从而在echo和print中得到完全相同的结果:print $arg1. $arg2. ...
。因此,这种语法在灵活性和表达方面没有任何优势。正如我在第1点中提到的,这只是一个微小的优势,因为它会导致更快的代码,但在99%的代码中,这可能并不重要。`<?php ($age >= 18) ? print('Can vote.') : print('Cannot vote.'); ?>`
<?=$foo?>
(自PHP 5.4起,<?php=$foo?>
也可以使用:https://www.php.net/manual/en/function.echo.php),它可能被称为“echo”的简写,但你同样可以称之为“print”的简写,因为它只是一个不同的语言结构。没有逻辑依据称这是echo相对于print的“优势”,正如一些人所声称的,因为这个结构既不是echo也不是print——它是一个执行与两者相同功能的替代结构。<?php print(($age >= 18) ? '可以投票。' : '不能投票。'); ?>
。+1 如果有详细的差异说明。 - Andrew Larssonecho
更快,但两者都可以很好地工作。 I have <?=$foo?> foo.
I have <?php echo $foo;?> foo.
<?=$foo?>
(或PHP 5.4的<?php=$foo?>
)并没有太多意义。那不是一个“echo”——它只是一种替代的PHP语言结构,与echo或print执行相同的操作。你也可以说<?=$foo?>
是“print”的快捷语法。 - Tripartio它不会影响文本的显示方式,但是两者的行为不同...
例如,print
根据它是否能够显示要打印的文本返回一个值(true
或 false
);而 echo
则只是简单地给出并继续执行。
这样做是有效的:
if (print ($variable)) {
//do something
}
这是毫无意义的:
if (echo $variable) {
//do something
}
$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);
echo的执行时间约为0.09秒
print的执行时间约为0.3秒至0.5秒
echo更快。而且echo()可以打印多个参数,print()只能打印一个参数。
echo
可以有两个参数
例如:echo $x, "\n";
print
只能有一个参数
例如:print "\n";
echo()
比print()
在我能想到的每种使用情况下都更快 - 虽然差别不大,但会累加。
以下是一些基准测试证据:http://www.phpbench.com 滚动到“echo vs. print”
输出多个字符串的最快方式是:
echo "string","string","string";
这甚至不需要执行字符串的连接,它只是一个接一个地回显一个字符串。 print()
没有任何问题,我认为除非你要输出数百万行,否则你不会真正看到差异。
在我看来,这不是一个速度问题。如果我正在开发一个应用程序,其中echo和print之间的速度差异具有任何重要意义,那么我会考虑使用与PHP不同(非解释性)的编程语言,这是非常明显的信号。
但只要你坚持使用PHP,那么这只是一种口味上的问题。顺便说一句,我更喜欢echo,因为它意味着更少的打字;)