Like PHP echo, PHP print is also a language construct not actually a real function.So you can also use it without parentheses like: print or print().
The major differences to echo
are that print
only accepts a single argument and always returns 1. So echo
is faster than print
.
<?php print("Hello World"); print "print() also works without parentheses."; print "This spans multiple lines. The newlines will be output as well"; print "This spans\nmultiple lines. The newlines will be\noutput as well."; ?>
Output:
Hello Worldprint() also works without parentheses.This spans multiple lines. The newlines will be output as wellThis spans multiple lines. The newlines will be output as well.
<?php // Defining variables $str = "Hello World!"; $int = 798; $arr = array(1,2,3); // Displaying variables print $str; print "<br>"; print $int; print "<br>"; foreach($arr as $value){ print $value." "; } ?>
Output:
Hello World! 798 1 2 3
echo
doesn't return any value,print
always returns 1<?php // multiple arguments echo 'multiple ', 'parameters'; // Invalid print only accepts a single argument print 'multiple ', 'parameters'; // Parse error: syntax error, unexpected ',' $var = print 'Hello'.PHP_EOL; var_dump($var); // int(1) ?>
We can dump the opcodes:
print.php
<?php echo 'lautturi'; ?>
$ php -d vld.active=1 print.php number of ops: 4 compiled vars: none line # op fetch ext return operands -------------------------------------------------------------- 1 0 PRINT ~0 'lautturi' 1 FREE ~0 2 2 RETURN 1 3* ZEND_HANDLE_EXCEPTION
echo.php
<?php echo 'lautturi'; ?>
$ php -d vld.active=1 echo.php number of ops: 3 compiled vars: none line # op fetch ext return operands ------------------------------------------------------------------ 1 0 ECHO 'lautturi' 2 1 RETURN 1 2* ZEND_HANDLE_EXCEPTION
print
uses one more opcode. But one opcode costs nothing.
And php need to checks if echo
has multiple values(arguments) to display or not.
print
only accepts a single argument.So the difference is very subtle.
you can use both of them even if a script have hundreds of calls to them.