超越PHP PHP动态 | 经典文章 | CLASS | 相关下载 | 常见问题 | FORUM | WIKI | 在线手册
Site search:    
<cryptexplode>
Last updated: Fri, 22 Jun 2007

echo

(PHP 3, PHP 4, PHP 5 )

echo -- Output one or more strings

Description

void echo ( string arg1 [, string argn...])

Outputs all parameters.

echo() is not actually a function (it is a language construct) so you are not required to use parentheses with it. In fact, if you want to pass more than one parameter to echo, you must not enclose the parameters within parentheses.

例子 1. echo() examples

<?php
echo "Hello World";

echo
"This spans
multiple lines. The newlines will be
output as well"
;

echo
"This spans\nmultiple lines. The newlines will be\noutput as well.";

echo
"Escaping characters is done \"Like this\".";

// You can use variables inside of an echo statement
$foo = "foobar";
$bar = "barbaz";

echo
"foo is $foo"; // foo is foobar

// You can also use arrays
$bar = array("value" => "foo");

echo
"this is {$bar['value']} !"; // this is foo !

// Using single quotes will print the variable name, not the value
echo 'foo is $foo'; // foo is $foo

// If you are not using any other characters, you can just echo variables
echo $foo;          // foobar
echo $foo,$bar;    // foobarbarbaz

// Some people prefer passing multiple parameters to echo over concatenation.
echo 'This ', 'string ', 'was ', 'made ', 'with multiple parameters.', chr(10);
echo
'This ' . 'string ' . 'was ' . 'made ' . 'with concatenation.' . "\n";

echo <<<END
This uses the "here document" syntax to output
multiple lines with $variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon. no extra whitespace!
END;

// Because echo is not a function, following code is invalid.
($some_var) ? echo 'true' : echo 'false';

// However, the following examples will work:
($some_var) ? print('true'): print('false'); // print is a function
echo $some_var ? 'true': 'false'; // changing the statement around
?>

echo() also has a shortcut syntax, where you can immediately follow the opening tag with an equals sign. This short syntax only works with the short_open_tag configuration setting enabled.

I have <?=$foo?> foo.

For a short discussion about the differences between print() and echo(), see this FAQTs Knowledge Base Article: http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40

注: 由于这是一个语言结构而非函数,因此它无法被“变量函数”调用。

See also print(), printf(), and flush().




add a note add a note User Contributed Notes
echo
asmo at mail dot utexas dot edu
16-May-2002 11:29
When possible, it is faster to pass multiple parameters to echo versus passing one parameter which is many concatinations.  Below is a script which will preform a quick benchmark for you to see:

<?php
function getmicrotime()
{
   list($usec, $sec) = explode(" ",microtime());
   return ((float)$usec + (float)$sec);
}

$args=array();
for($i=0;$i<10000;$i++)
     $args[]="'line to output number $i\n'";
$concatEcho="echo ".implode("\n.",$args).";";
$paramEcho="echo ".implode("\n,",$args).";";
unset($args);
$startParam=getmicrotime();
eval($paramEcho);
$endParam=getmicrotime();
$startConcat=getmicrotime();
eval($concatEcho);
$endConcat=getmicrotime();
$concatTime=$endConcat-$startConcat;
$paramTime=$endParam-$startParam;
print "\nConcats took $concatTime seconds\nParams took $paramTime\n";
?>

The results I got when running the script above were 6.047 seconds for concatinations and  1.781 seconds for parameter passing.  This was just executing the script via command line, having the output dumped to a console.  The performace increase is even greater when using a script on a webpage with output buffering.

<cryptexplode>
 Last updated: Fri, 22 Jun 2007
view source | feedback | send page | sitemap | aboutus   
Copyright ® 2002-2003 PHPE.NET. All rights reserved
Last updated:2002-11-22