我应该在PHP脚本中使用echo还是print?

时间:2011-07-29 20:13:32

标签: php printing echo

我应该在php脚本中使用哪种语句?回声还是打印?什么是更快和最常用?提前谢谢。

9 个答案:

答案 0 :(得分:16)

echo和print都是PHP(不是函数)的语言结构。哪个更好取决于您的优先事项。我会考虑三个可能的优先事项:1。你提到速度;你提到了广泛使用;我会增加灵活性。

  1. 速度:正如许多其他人所提到的,回声稍微快一点(特别是在使用多参数语法时,用逗号分隔的元素),但差别很小,只有代码才有数千个循环速度真的非常重要。有关基准,请参阅http://www.phpbench.com

  2. 广泛使用:似乎超出传统,回声比PHP更普遍用于打印。这是非常轶事,但我认为当您从各种来源阅读PHP代码时,您会得出相同的结论。

  3. 灵活性:我认为在表达代码时,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”的简写,但你可以像把它称为“打印”的简写,因为它只是一种不同的语言结构。有些人声称,没有逻辑基础将这称为回声优于印刷的“优势”,因为这种结构既不是回声,也不是印刷品 - 它是一种与两者同样的替代结构。

  4. 就我个人而言,我更愿意选择一个并始终坚持下去。我个人更喜欢打印,因为它在编码灵活性方面略微优越,而且“打印”听起来对我来说更直观 - 这纯粹是主观的。我不关心回声是否可能被更广泛地使用,因为如果其他人需要阅读我的代码,也可以很好地理解印刷。对于真正重要的打印速度的1%代码,我会使用echo。

答案 1 :(得分:11)

据说echo更快,但任何一个都可以正常工作。

当在HTML中嵌入php时,Echo还提供了一种快捷语法。即。

    I have <?=$foo?> foo.

vs

     I have <?php echo $foo;?> foo.

请参阅http://us2.php.net/manual/en/function.echo.php

答案 2 :(得分:5)

它不会影响文本的显示方式,但两者都有不同的行为......

例如,print会返回一个值(truefalse),具体取决于它是否可以显示要打印的文本;相反,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)

回声更快。另外echo()可以打印多个参数,print()只能打印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";