Differences between echo, echo(), print and print() in PHP
Two differences:
print
has a return value (always 1), echo
doesn't. Therefore print
can be used as an expression.
echo
accepts multiple arguments. So you may write echo $a, $b
instead of echo $a . $b
.
Concerning the parentheses: They are simply wrong in my eyes. They have no function at all. You could as well write echo (((((((((($a))))))))))
; people usually include parentheses from ignorance, thinking that print
is a function. Furthermore it increases the chance of misinterpretation. For example print("foo") && print("bar")
does not print foobar
, because PHP interprets this as print(("foo") && print("bar"))
. So bar1
would be printed, even though it looks different.
Comments
-
Aillyn almost 2 years
Possible Duplicates:
How are echo and print different in PHP?
Is there any difference between ‘print’ and ‘echo’ in PHP?
What’s the difference of echo,print,print_r in PHP?There are several ways to print output in PHP; including but not limited to:
echo 'Hello'; echo ('Hello'); print 'Hello'; print ('Hello');
Are there any differences between these four? Also, do the parentheses make any difference at all?
-
Aillyn over 13 yearsI know Python is not PHP, but they banned the use of
print 'something'
, now you always have to useprint('something')
with the parentheses. -
Aillyn over 13 yearsAlso see: ideone.com/LUOOG
-
NikiC over 13 yearsNo. It does make a difference. Even though it outputs the same the version with parentheses looks different. The parentheses and function like formatting make it look different. At least I would be fooled into thinking that it outputs
foobar
, if I didn't stop to think about it. -
NikiC over 13 yearsYes, you are right, it outputs the same thing. Maybe I didn't explain my point clearly. I'm talking about the understandability of the code, not of the functionality. The functionality doesn't change, that's correct.
-
NikiC over 13 yearsThough there actually is one case, there using parentheses will not only make the code less understandable, but will actually break things. If you have a function which returns by reference
return($a)
will not work, because it will not return a reference to$a
, but the result of the expression($a)
, which obviously is a value, not a reference. But this is off topic, because we're talking about print and echo ^^ -
Aillyn over 13 years@nik Do elaborate. I can't see how it would be different
-
Aillyn over 13 years@nik the part about references
-
NikiC over 13 yearsSimply see the third note on php.net/return. It is explained there.