The 5th Annual China PHP Conference

echo

(PHP 4, PHP 5, PHP 7)

echoGibt einen oder mehrere Strings aus

Beschreibung

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

Gibt alle Parameter aus.

echo ist nicht wirklich eine Funktion sondern ein Sprach-Konstrukt, daher ist es nicht notwendig, Klammern zu verwenden. echo verhält sich im Gegensatz zu einigen anderen Sprach-Konstrukten nicht wie eine Funktion, deshalb kann es nicht immer in einem Funktionskontext verwendet werden. Hinzu kommt, dass bei der Angabe mehrerer Parameter für echo diese nicht von Klammern umschlossen sein dürfen.

echo besitzt zusätzlich eine Syntax-Kurzform, Sie können also ein öffnendes PHP-Tag von einem Gleichheitszeichen gefolgt notieren. Vor PHP 5.4.0 funktioniert diese Syntax-Kurzform nur, wenn short_open_tag in der php.ini eingeschaltet ist.

Ich habe <?=$foo?> foo.

Parameter-Liste

arg1

Der auszugebende Parameter.

...

Rückgabewerte

Es wird kein Wert zurückgegeben.

Beispiele

Beispiel #1 echo-Beispiele

<?php
echo "Hallo Welt";

echo 
"Diese Ausgabe geht über
mehrere Zeilen. Die Zeilenumbrüche werden
ebenfalls ausgegeben."
;

echo 
"Diese Ausgabe geht über\nmehrere Zeilen. Die Zeilenumbrüche werden\nebenfalls ausgegeben.";

echo 
"Escape Zeichen werden \"so realisiert\".";

// Sie können Variablen innerhalb eines echo-Statements verwenden
$foo "foobar";
$bar "barbaz";

echo 
"foo ist $foo"// foo ist foobar

// Sie können auch Arrays nutzen
$bar = array("wert" => "foo");

echo 
"Das ist {$bar['wert']} !"// Das ist foo !

// Wenn Sie einfache Anführungszeichen verwenden, wird der Name der Variable
// anstelle ihres Inhalts ausgegeben
echo 'foo ist $foo'// foo ist $foo

// Sie können auch ausschließlich Variablen ausgeben,
// sofern Sie keine weiteren Zeichen ausgeben wollen
echo $foo;          // foobar
echo $foo,$bar;     // foobarbarbaz

// Einige Programmierer bevorzugen es, mehrere Parameter
// mithilfe von Stringverkettung auszugeben
echo 'Dieser ''String ''besteht ''aus ''mehreren Parametern.'chr(10);
echo 
'Dieser  ' 'String ' 'wurde ' 'mit ' 'Stringverkettung erzeugt.' "\n";

echo <<<END
Hier wird die "here document"-Syntax verwendet, um mehrere
Zeilen mit 
$variablen Interpolation auszugeben. Beachten Sie,
dass das sich das "here document"-Endzeichen in einer Zeile
mit nur einem Strichpunkt aber ohne Leerzeichen o.ä. stehen muss!
END;

// Da echo sich nicht wie eine Funktion verhält, ist der folgende Code ungültig.
($eine_variable) ? echo 'true' : echo 'false';

// Folgende Beispiele funktionieren hingegen:
($eine_variable) ? print 'true': print 'false' ;   // print ist ebenfalls ein
                         // Konstrukt, aber es verhält sich wie eine Funktion,
                         // so dass es in diesem Kontext verwendet werden kann
echo $eine_variable 'true''false';            // Das Statement herumgedreht
?>

Anmerkungen

Hinweis: Da dies ein Sprachkonstrukt und keine Funktion ist, können Sie dieses nicht mit Variablenfunktionen verwenden.

Siehe auch

add a note add a note

User Contributed Notes 3 notes

up
4
pemapmodder1970 at gmail dot com
1 month ago
Passing multiple parameters to echo using commas (',')is not exactly identical to using the concatenation operator ('.'). There are two notable differences.

First, concatenation operators have much higher precedence. Referring to http://php.net/operators.precedence, there are many operators with lower precedence than concatenation, so it is a good idea to use the multi-argument form instead of passing concatenated strings.

<?php
echo "The sum is " . 1 | 2; // output: "2". Parentheses needed.
echo "The sum is ", 1 | 2; // output: "The sum is 3". Fine.
?>

Second, a slightly confusing phenomenon is that unlike passing arguments to functions, the values are evaluated one by one.

<?php
function f($arg){
 
var_dump($arg);
  return
$arg;
}
echo
"Foo" . f("bar") . "Foo";
echo
"\n\n";
echo
"Foo", f("bar"), "Foo";
?>

The output would be:
string(3) "bar"FoobarFoo

Foostring(3) "bar"
barFoo

It would become a confusing bug for a script that uses blocking functions like sleep() as parameters:

<?php
while(true){
  echo
"Loop start!\n", sleep(1);
}
?>

vs

<?php
while(true){
  echo
"Loop started!\n" . sleep(1);
}
?>

With ',' the cursor stops at the beginning every newline, while with '.' the cursor stops after the 0 in the beginning every line (because sleep() returns 0).
up
5
Jamie Robinson
9 months ago
The {} syntax is useful for printing non array variables as well, an example to illustrate:

<?php
$foo
= "foobar";
$bar = "barbaz";

//Will produce the error: Undefined variable: $foo_
echo "$foo_$bar";

//Will print the intended string: "foobar_barbaz"
echo "{$foo}_$bar";
?>

Could even be worth getting into the habit of enclosing all variables in {} when writing echo strings, to be on the safe side.
up
-12
214363570 at qq dot com
2 months ago
Dear:
      Is there a offical function like echoln(), such as
  
     function echoln($s=""){
            echo $s."\n";
     }

     $str = "i love php";
     echoln($str);
     echoln($str);
     echoln($str);
     echoln($str);

     not is:
     echo $str."\n";
     echo $str."\n";
     echo $str."\n";
     echo $str."\n";
     echo $str."\n";

     Thank you.

     Best regards.
To Top