PHP中的echo和print有什么不同?

可能重复:
参考:比较PHP的打印和回声

在PHP中这两个函数有什么主要和根本的区别?

来自: http : //web.archive.org/web/20090221144611/http : //faqts.com/knowledge_base/view.phtml/aid/1/fid/40

  1. 速度。 两者之间是有区别的,但是在速度方面它应该是无关紧要的。 回声是稍微快一些,因为它不设置返回值,如果你真的想要坚持下去。

  2. expression。 print()行为像一个函数,你可以这样做: $ret = print "Hello World" ; 而$ret将是1 。 这意味着print可以用作echo不能的更复杂expression式的一部分。 来自PHP手册的一个例子:

 $b ? print "true" : print "false"; 

打印也是优先级表的一部分,如果要在复杂的expression式中使用,则该表必须是它的一部分。 它只是在优先级列表的底部。 只有“,”AND,OR和XOR较低。

  1. 参数(S)。 语法是: echo expression [, expression[, expression] ... ]但是echo ( expression, expression )无效。 这将是有效的: echo ("howdy"),("partner") ; 如同echo "howdy","partner"echo "howdy","partner" ; (把括号放在这个简单的例子中是没有用的,因为没有像这样的单个术语的运算符优先级问题。)

所以,没有括号的echo可以接受多个参数,这些参数被连接在一起:

  echo "and a ", 1, 2, 3; // comma-separated without parentheses echo ("and a 123"); // just one parameter with parentheses 

print()只能带一个参数:

  print ("and a 123"); print "and a 123"; 

他们是:

  • 打印只需要一个参数,而echo可以有多个参数。
  • 打印返回一个值(1),所以可以用作expression式。
  • 回声稍快。

要添加上面的答案,而打印只能采取一个参数,它将允许连接多个值,即:

 $count = 5; print "This is " . $count . " values in " . $count/5 . " parameter"; 

这是1个参数中的5个值

按照PHP.net手册的build议,阅读这个讨论 。

一个主要的区别是echo可以输出多个参数。 例如:

 echo 'foo', 'bar'; // Concatenates the 2 strings print('foo', 'bar'); // Fatal error 

如果您想要评估输出语句的结果(如下所示),请使用print 。 如果没有,使用echo

 $res = print('test'); var_dump($res); //bool(true) 

我认为print()echo慢。

我喜欢使用print()仅用于以下情况:

  echo 'Doing some stuff... '; foo() and print("ok.\n") or print("error: " . getError() . ".\n");