(PHP 4, PHP 5, PHP 7, PHP 8)
print — Output a string
$expression
): int
Outputs expression
.
print
is not a function but a language construct.
Its argument is the expression following the print
keyword,
and is not delimited by parentheses.
The major differences to echo are that
print
only accepts a single argument and always returns
1
.
expression
The expression to be output. Non-string values will be coerced to strings,
even when the
strict_types
directive is enabled.
Returns 1
, always.
Example #1 print
examples
<?phpprint "print does not require parentheses.";// No newline or space is added; the below outputs "helloworld" all on one lineprint "hello";print "world";print "This string spansmultiple lines. The newlines will beoutput as well";print "This string spans\nmultiple lines. The newlines will be\noutput as well.";// The argument can be any expression which produces a string$foo = "example";print "foo is $foo"; // foo is example$fruits = ["lemon", "orange", "banana"];print implode(" and ", $fruits); // lemon and orange and banana// Non-string expressions are coerced to string, even if declare(strict_types=1) is usedprint 6 * 7; // 42// Because print has a return value, it can be used in expressions// The following outputs "hello world"if ( print "hello" ) { echo " world";}// The following outputs "true"( 1 === 1 ) ? print 'true' : print 'false';?>
Note: Using with parentheses
Surrounding the argument to
<?phpprint "hello";// outputs "hello"print("hello");// also outputs "hello", because ("hello") is a valid expressionprint(1 + 2) * 3;// outputs "9"; the parentheses cause 1+2 to be evaluated first, then 3*3// the print statement sees the whole expression as one argumentif ( print("hello") && false ) { print " - inside if";}else { print " - inside else";}// outputs " - inside if"// the expression ("hello") && false is first evaluated, giving false// this is coerced to the empty string "" and printed// the print construct then returns 1, so code in the if block is run?>
When using
<?phpif ( (print "hello") && false ) { print " - inside if";}else { print " - inside else";}// outputs "hello - inside else"// unlike the previous example, the expression (print "hello") is evaluated first// after outputting "hello", print returns 1// since 1 && false is false, code in the else block is runprint "hello " && print "world";// outputs "world1"; print "world" is evaluated first,// then the expression "hello " && 1 is passed to the left-hand print(print "hello ") && (print "world");// outputs "hello world"; the parentheses force the print expressions// to be evaluated before the &&?>
Note: Because this is a language construct and not a function, it cannot be called using variable functions, or named arguments.