php函数 echo,和print

以前从来没注意过echo和print还有区别,今天查了下原文在http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40 上

1. Speed. There is a difference between the two, but speed-wise it should be irrelevant which one you use. echo is marginally faster since it doesn't set a return value if you really want to get down to the nitty gritty.

首先是速度,echo 没有返回值, 所以速度会快点,如果你不是在处理非常细节的东西速度并不会造成很大的影响

2. Expression. print() behaves like a function in that you can do: $ret = print "Hello World"; And $ret will be 1. That means that print can be used as part of a more complex expression where echo cannot. An example from the PHP Manual: $b ? print "true" : print "false"; print is also part of the precedence table which it needs to be if it is to be used within a complex expression. It is just about at the bottom of the precedence list though. Only "," AND, OR and XOR are lower.

print() 可以作为函数来使用。 $ret = print "Hello World"; $ret的值就为1。在比较复杂的表达式里print可以使用但是echo 不行, 比如$b ? print "true" : print "false"; 这个三元表达式,如果换成$b ? echo "true" : echo "false"; 肯定就出错了。

3. Parameter(s). The grammar is: echo expression [, expression[, expression] ... ] But echo ( expression, expression ) is not valid. This would be valid: echo ("howdy"),("partner"); the same as: echo "howdy","partner"; (Putting the brackets in that simple example serves no purpose since there is no operator precedence issue with a single term like that.) So, echo without parentheses can take multiple parameters, which get concatenated:

echo "and a ", 1, 2, 3; // comma-separated without parentheses

echo ("and a 123"); // just one parameter with parentheses

print() can only take one parameter:

print ("and a 123");

print "and a 123";

参数: echo 可以有多个参数,但是print只能是一个参数。echo ("howdy"),("partner"); 和 echo "howdy","partner"; 两个结果是一样的:howdypartner,而且他们都是合法的。但是print ("and a 123");print "and a 123";只能带一个参数。