如何在PHP中回显和打印不同?

zuk*_*uk1 208 php echo

可能重复:
参考:比较PHP的print和echo

PHP中这两个函数之间是否有任何重大和根本的区别?

dl_*_*l__ 279

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

  1. 速度.两者之间存在差异,但在速度方面,它应与您使用的哪一个无关.如果你真的想要深入了解细节,那么回声会稍快一些,因为它没有设置返回值.

  2. 表达.print()表现得像一个功能,你可以这样做: $ret = print "Hello World"; 而且$ret1.这意味着print可以用作echo不能表达的更复杂表达式的一部分.PHP手册中的一个例子:

$b ? print "true" : print "false";
Run Code Online (Sandbox Code Playgroud)

如果要在复杂表达式中使用print,它也是优先级表的一部分.它只是在优先列表的底部.只有","AND,OR和XOR较低.

  1. 参数(S).语法是:,AND无效.这是有效的:OR; 同样的:XOR; (将括号放在这个简单的例子中是没有用的,因为没有像这样的单个术语的运算符优先级问题.)

因此,没有括号的echo可以采用多个参数,这些参数会被连接起来:

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

echo expression [, expression[, expression] ... ] 只能带一个参数:

   print ("and a 123");
   print  "and a 123";
Run Code Online (Sandbox Code Playgroud)

  • [print`的文档](http://www.php.net/manual/en/function.print.php)明确地反驳了这个答案:"`print`实际上并不是一个真正的函数(它是一种语言结构) )". (41认同)
  • Echo也可用于三元运算:echo($ b)?'真假'; (36认同)
  • @philjohn我很确定你的陈述等于:echo(($ b)?'true':'false'); 而不是:(echo($ b))?'真假'; 因此,回声不是三元运行中实际情况的一部分. (32认同)
  • 为了使用`echo`制作一些不可行的东西:`$ b?print"true":die("false");` (4认同)
  • 来自w3C:PHP print语句:print也是一种语言结构, (3认同)
  • 你可以`echo(print('test'))`但你不能`print(echo('test'))` (2认同)

sea*_*boy 74

他们是:

  • print只接受一个参数,而echo可以有多个参数.
  • print返回值(1),因此可以用作表达式.
  • 回声稍快.


小智 9

要添加上面的答案,虽然print只能接受一个参数,但它允许连接多个值,即:

$count = 5;

print "This is " . $count . " values in " . $count/5 . " parameter";
Run Code Online (Sandbox Code Playgroud)

这是1个参数中的5个值


gri*_*lix 7

我认为print()比慢echo.

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

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


Ros*_*oss 6

正如PHP.net手册所示,请阅读本讨论.

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

echo 'foo', 'bar';   // Concatenates the 2 strings
print('foo', 'bar'); // Fatal error
Run Code Online (Sandbox Code Playgroud)

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

$res = print('test');
var_dump($res); //bool(true)
Run Code Online (Sandbox Code Playgroud)

  • echo不接受echo('foo','bar');但是接受echo'foo','bar'; (5认同)
  • 我知道这个答案是陈旧的,但不是'打印'总是返回1?此外,您何时以及为什么需要进行测试以确定打印出来的东西?这只是直接上升,不需要,永远!坦率地说,打印是没用的,应该删除,有利于ECHO! (2认同)