This version of the page http://ua2.php.net/echo (0.0.0.0) stored by archive.org.ua. It represents a snapshot of the page as of 2007-08-09. The original page over time could change.
PHP: echo - Manual
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

  • PHP Manual
  • String Functions
  • addcslashes
  • addslashes
  • bin2hex
  • chop
  • chr
  • chunk_ split
  • convert_ cyr_ string
  • convert_ uudecode
  • convert_ uuencode
  • count_ chars
  • crc32
  • crypt
  • echo
  • explode
  • fprintf
  • get_ html_ translation_ table
  • hebrev
  • hebrevc
  • html_ entity_ decode
  • htmlentities
  • htmlspecialchars_ decode
  • htmlspecialchars
  • implode
  • join
  • levenshtein
  • localeconv
  • ltrim
  • md5_ file
  • md5
  • metaphone
  • money_ format
  • nl_ langinfo
  • nl2br
  • number_ format
  • ord
  • parse_ str
  • print
  • printf
  • quoted_ printable_ decode
  • quotemeta
  • rtrim
  • setlocale
  • sha1_ file
  • sha1
  • similar_ text
  • soundex
  • sprintf
  • sscanf
  • str_ getcsv
  • str_ ireplace
  • str_ pad
  • str_ repeat
  • str_ replace
  • str_ rot13
  • str_ shuffle
  • str_ split
  • str_ word_ count
  • strcasecmp
  • strchr
  • strcmp
  • strcoll
  • strcspn
  • strip_ tags
  • stripcslashes
  • stripos
  • stripslashes
  • stristr
  • strlen
  • strnatcasecmp
  • strnatcmp
  • strncasecmp
  • strncmp
  • strpbrk
  • strpos
  • strrchr
  • strrev
  • strripos
  • strrpos
  • strspn
  • strstr
  • strtok
  • strtolower
  • strtoupper
  • strtr
  • substr_ compare
  • substr_ count
  • substr_ replace
  • substr
  • trim
  • ucfirst
  • ucwords
  • vfprintf
  • vprintf
  • vsprintf
  • wordwrap
explode crypt
Last updated: Thu, 19 Jul 2007

view this page in

echo

(PHP 4, PHP 5)

echo — Output one or more strings

Description

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

Outputs all parameters.

echo() is not actually a function (it is a language construct), so you are not required to use parentheses with it. echo() (unlike some other language constructs) does not behave like a function, so it cannot always be used in the context of a function. Additionally, if you want to pass more than one parameter to echo(), the parameters must not be enclosed within parentheses.

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.

Parameters

arg1

The parameter to output.

...

Return Values

No value is returned.

Examples

Example 2371. 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 does not behave like a function, the following code is invalid.
($some_var) ? echo 'true' : echo 'false';

// However, the following examples will work:
($some_var) ? print 'true' : print 'false'; // print is also a construct, but
                                            // it behaves like a function, so
                                            // it may be used in this context.
echo $some_var ? 'true': 'false'; // changing the statement around
?>

Notes

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

Note: Because this is a language construct and not a function, it cannot be called using variable functions

See Also

print()
printf()
flush()



explode crypt
Last updated: Thu, 19 Jul 2007
 
add a note User Contributed Notes
echo
scott at truebluewc dot com
28-Jul-2007 08:58
<?

function yrsolder ($person=0)
{
$george = 29;
$bobby = 27;
if(
$person==0) // george
{$yrs = ($george-$bobby);}
if(
$person==1) // bobby
{$yrs = ($bobby-$george);}
}

echo
"I am ".yrsolder(1)." years older than Bobby!";
?>

Will output:

3I am older than Bobby!

instead of

I am 3 years older than Bobby!

This is because php will call functions when they are referenced, before an echo statement is called. So if you have an echo statement inside the function, that echo statement is called first, then the echo statement that originally called the function.
Sean Middleditch
22-May-2007 02:37
The reason is operator precedence.  The . and + operators apparently have equal precedence.  So the following line:

"begin" . $var + 1 . "end"

is parsed to the equivalent of:

((("begin" . $var) + 1) . "$end")

The + 1 is being applied to the string "begin".$var, which is treated as 0 because it doesn't start with any digits, so the end result should be "1end".

It's not a bug, just a minor misdesign (at worst).
superwebdeveloper at gmail dot com
25-Apr-2007 09:39
I noticed something new with echo:

echo "You are viewing #" . $itemValue + 1 . " of a total of $announcementsCount announcements. <br />";

causes "You are viewing #"  to not appear in the output.

putting parenthesis around the math resolves the issue.

echo "You are viewing #" . ($itemValue + 1) . " of a total of $announcementsCount announcements. <br />";

this may not be so much a bug as something that happens for a darn good reason. Im just not sure of the reason.
Jim Walker
13-Jan-2007 09:24
Putting the constant value __LINE__ in debugging messages can save time locating the message line in your source. You can use the same message text in more than one location and the message will be unique. For example,

     echo __LINE__.' My Array: '.$k.' = '.$v.'<br>';
Meercat9
14-Dec-2006 06:12
<table align=center>
<?
//Using Backslashes Does not Make the Quotation Marks Not Execute, Only Separates them From the Others.
 
echo "<tr align=center bgcolor=#1A1A1A onMouseOver=\"this.bgColor='#33333';\" onMouseOut=\"this.bgColor='#1A1A1A';\">"
?>
</table>

Which Can Work Similar if You Want to Store Some Java Incorporated HTML in a String Variable.

<?
  $table
= "<table align=\"center\">
  $td = "
<tr align=center bgcolor=#1A1A1A onMouseOver=\"this.bgColor='#33333';\" onMouseOut=\"this.bgColor='#1A1A1A';\">";
 
$td = "<td align=\"center\">";

echo
"<$table \n $tr \n $td \n Hello </td>\n</tr>\n</table>"
?>
rwruck
27-Jan-2006 11:15
It should be mentioned here that the script will be aborted if you output something in response to a HTTP HEAD request.
In the following example, the second line will NOT be written to the file. Any registered shutdown function will be called, though:

<?php
$hf
= fopen('head.log', 'ab');
fwrite($hf, "before output\n");
echo
"Test";
fwrite($hf, "after output\n");
fclose($hf);
?>

This is normal behaviour; see the description of $_SERVER.
Jason Carlson - SiteSanity
16-May-2005 08:28
In response to Ryan's post with his echobig() function, using str_split wastes memory resources for what you are doing.

If all you want to do is echo smaller chunks of a large string, I found the following code to perform better and it will work in PHP versions 3+

<?php
function echobig($string, $bufferSize = 8192)
{
 
// suggest doing a test for Integer & positive bufferSize
 
for ($chars=strlen($string)-1,$start=0;$start <= $chars;$start += $bufferSize) {
    echo
substr($string,$start,$buffer_size);
  }
}
?>
renrutal at gmail dot com
29-Mar-2005 02:34
Note that:

<?php
echo "2 + 2 = " . 2+2; // This will print 4
echo "2 + 2 = " , 2+2; // This will print 2+2 = 4
?>

The commas will parse the result of the expressions correctly.
ryan at wonko dot com
27-Feb-2005 10:56
Due to the way TCP/IP packets are buffered, using echo to send large strings to the client may cause a severe performance hit. Sometimes it can add as much as an entire second to the processing time of the script. This even happens when output buffering is used.

If you need to echo a large string, break it into smaller chunks first and then echo each chunk. The following function will do the trick in PHP5:

<?php
function echobig($string, $bufferSize = 8192)
{
   
$splitString = str_split($string, $bufferSize);

    foreach(
$splitString as $chunk)
        echo
$chunk;
}
?>
Truffy
15-Jan-2005 11:02
You can use braces around variables as well as array items. This is useful to help recognition of your variables in your code, but most useful where the variable iteslf cannot be separated with spaces from the preceding/following code, for exmple in a file path:

If a path is assigned the variable $path, then this code will not work:

echo "$pathindex.php";

whereas this will

echo "{$path}index.php";
zombie)at(localm)dot(org)
25-Jan-2003 09:26
[Ed. Note: During normal execution, the buffer (where echo's arguments go) is not flushed (sent) after each write to the buffer. To do that you'd need to use the flush() function, and even that may not cause the data to be sent, depending on your web server.]

Echo is an i/o process and i/o processes are typically time consuming. For the longest time i have been outputting content by echoing as i get the data to output. Therefore i might have hundreds of echoes in my document. Recently, i have switched to concatenating all my string output together and then just doing one echo at the end. This organizes the code more, and i do believe cuts down on a bit of time. Likewise, i benchmark all my pages and echo seems to influence this as well. At the top of the page i get the micro time, and at the end i figure out how long the page took to process. With the old method of "echo as you go" the processing time seemed to be dependent on the user's net connection as well as the servers processing speed. This was probably due to how echo works and the sending of packets of info back and forth to the user. One an one script i was getting .0004 secs on a cable modem, and a friend of mine in on dialup was getting .2 secs. Finally, to test that echo is slow; I built strings of XML and XSLT and used the PHP sablotron functions to do a transformation and return a new string. I then echoed the string. Before the echo, the process time was around .025 seconds and .4 after the echo. So if you are big into getting the actual processing time of your scripts, don't include echoes since they seem to be user dependent. Note that this is just my experience and it could be a fluke.
add a note

explode crypt
Last updated: Thu, 19 Jul 2007
 
 
show source | credits | sitemap | contact | advertising | mirror sites