239 Stimmen

Was ist der Unterschied zwischen echo und print in PHP?

Mögliches Duplikat:
Referenz: PHPs print und echo im Vergleich

Gibt es einen wesentlichen und grundlegenden Unterschied zwischen diesen beiden Funktionen in PHP?

304voto

dl__ Punkte 4380

Von: http://web.archive.org/web/20090221144611/http://faqts.com/knowledge_base/view.phtml/aid/1/fid/40

  1. Geschwindigkeit. Es gibt einen Unterschied zwischen den beiden, aber in Bezug auf die Geschwindigkeit sollte es sollte es irrelevant sein, welche Sie verwenden. echo ist geringfügig schneller da es keinen Rückgabewert setzt, wenn Sie wirklich zur Sache kommen wollen. auf den Punkt kommen wollen.

  2. Ausdruck. print() verhält sich wie eine Funktion, die Sie ausführen können: $ret = print "Hello World" Und $ret wird sein 1 . Das bedeutet, dass print als Teil eines komplexeren Ausdrucks verwendet werden kann, was bei echo nicht möglich ist. Ein Beispiel aus dem PHP Manual:

    $b ? print "true" : print "false";

print ist auch Teil der Rangfolgetabelle, was er auch sein muss, wenn er innerhalb eines komplexen Ausdrucks verwendet werden soll. Es befindet sich ganz am Ende der Vorrangliste. Nur , AND OR XOR niedriger sind.

  1. Parameter(s). Die Grammatik lautet: echo expression [, expression[, expression] ... ] Aber echo ( expression, expression ) ist nicht gültig. Dies wäre gültig: echo ("howdy"),("partner") ; dasselbe wie: echo "howdy","partner" (Das Setzen der Klammern in diesem einfachen Beispiel dient keinen Zweck, da es kein Problem mit der Vorrangigkeit von Operatoren bei einem einzelnen Term wie diesem gibt.)

So kann echo ohne Klammern mehrere Parameter annehmen, die dann konkateniert werden:

   echo  "and a ", 1, 2, 3;   // comma-separated without parentheses
   echo ("and a 123");        // just one parameter with parentheses

print() kann nur einen Parameter annehmen:

   print ("and a 123");
   print  "and a 123";

37 Stimmen

Echo kann auch in einer ternären Operation verwendet werden: echo ($b) ? 'wahr' : 'falsch';

38 Stimmen

@philjohn Ich bin mir ziemlich sicher, dass Ihre Anweisung gleichbedeutend ist mit: echo (($b) ? 'true' : 'false'); und nicht: (echo ($b)) ? (echo ($b)) ? 'true' : 'false'; Also ist echo nicht Teil der eigentlichen Bedingung in der ternären Operation.

4 Stimmen

Um etwas nicht Machbares zu machen mit echo : $b ? print "true" : die("false");

77voto

seanyboy Punkte 5563

Sie sind:

  • print benötigt nur einen Parameter, während echo mehrere Parameter haben kann.
  • print gibt einen Wert (1) zurück, kann also als Ausdruck verwendet werden.
  • echo ist etwas schneller.

10voto

grilix Punkte 4996

Ich glaube print() ist langsamer als echo .

Ich verwende gerne print() nur für Situationen wie:

 echo 'Doing some stuff... ';
 foo() and print("ok.\n") or print("error: " . getError() . ".\n");

1 Stimmen

Können Sie das deutlicher machen, Sir?

1 Stimmen

Wow, das ist eine wirklich schlechte Antwort von vor neun Jahren, ich glaube nicht, dass wir sie noch verbessern können. Entschuldigung!

1 Stimmen

@Legend Ich glaube, @grilix bezieht sich auf die Fähigkeit von print(), 1 zurückzugeben, wenn die foo() Funktion false zurückgibt, dann wird die and Teil falsch ist... damit kann der zweite Teil der Auswertung (nach der or ) auszuführen. Dies ist eine interessante Verwendung von print an die ich noch nicht gedacht hatte.

9voto

Um die obigen Antworten zu ergänzen: print kann zwar nur einen Parameter annehmen, erlaubt aber die Verkettung mehrerer Werte, d.h.:

$count = 5;

print "This is " . $count . " values in " . $count/5 . " parameter";

Dies sind 5 Werte in 1 Parameter

6voto

Ross Punkte 44536

Wie das PHP.net-Handbuch vorschlägt, lesen Sie bitte den Abschnitt diese Diskussion .

Ein wesentlicher Unterschied besteht darin, dass echo kann mehrere Parameter zur Ausgabe annehmen. z.B.:

echo 'foo', 'bar';   // Concatenates the 2 strings
print('foo', 'bar'); // Fatal error

Wenn Sie das Ergebnis einer Ausgabeanweisung (wie unten) auswerten möchten, verwenden Sie print . Wenn nicht, verwenden Sie echo .

$res = print('test');
var_dump($res); //bool(true)

5 Stimmen

Echo akzeptiert nicht echo('foo','bar');, wohl aber echo 'foo', 'bar';

3 Stimmen

Ich weiß, dass diese Antwort alt ist, aber ist sie nicht print IMMER 1 zurückgeben? Außerdem, wann und warum sollten Sie jemals testen müssen, um sicher zu sein, dass etwas ausgedruckt wurde? Das ist schlicht und ergreifend NICHT NÖTIG, NIEMALS! Ehrlich gesagt, ist print nutzlos und sollte zugunsten von ECHO entfernt werden!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X