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

问题描述 投票:0回答:9

我应该在 php 脚本中使用哪个语句?回声还是打印?什么更快且最常用?

php printing echo
9个回答
19
投票

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

  1. 速度:正如许多其他人提到的,echo 稍快一些(特别是在使用多参数语法时,元素用逗号分隔),但差异很小,只有在具有数千个循环的代码中才重要,其中速度确实很重要,真的很重要。请参阅 http://www.phpbench.com 了解基准测试。

  2. 广泛使用:似乎与传统不同的是,echo 在 PHP 中比 print 更常用。这是相当轶事,但我认为当您从各种来源阅读 PHP 代码时,您会得出相同的结论。

  3. 灵活性:我相信 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。


12
投票

据说

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

Echo 还提供了在 HTML 中嵌入 php 时的快捷语法。即

    I have <?=$foo?> foo.

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

参见 https://www.php.net/manual/en/function.echo.php


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);

回声约为0.09秒
打印时间约为 0.3 秒至 0.5 秒


5
投票

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

例如,

print
返回一个值(
true
false
),具体取决于它是否可以显示要打印的文本;相反,
echo
只是给出并继续。

这样做是有效的:

if (print ($variable)) {
//do something
}

这毫无意义:

if (echo $variable) {
//do something
}

1
投票

回声更快。 echo() 还可以打印 1 个以上的参数,而 print() 只能打印 1 个参数。


0
投票
在我能想到的每个使用案例中,

echo()
都比
print()
快——虽然快不了多少,但加起来就多了。

这里有一些基准测试证明:http://www.phpbench.com向下滚动到“echo vs. print”


0
投票

IMO 这不是速度问题。如果我正在开发一个应用程序,其中 echo 和 print 之间的速度差异具有重要意义,我会认为这是使用与 PHP 不同(非解释)编程语言的非常明显的标志。

但只要你坚持使用 PHP,这就是 - IMvHO - 只是一个风格问题。顺便说一句,我更喜欢 echo,但只是因为它意味着更少的打字;)


0
投票

回显多个字符串的最快方法是:

echo "string","string","string";

这甚至不需要执行字符串的串联,它只是一个接一个地回显字符串。

print()
没有任何问题,我认为最终除非您回显数百万行,否则您不会真正看到差异。


0
投票

echo
可以有两个参数

例如:

echo $x, "\n";

print
一个参数

例如:

print "\n";

© www.soinside.com 2019 - 2024. All rights reserved.