print_r ist nicht gerade ein Alias von var_dump - es wird in einem anderen Format ausgegeben. Insbesondere enthält die Ausgabe von var_dump auch den "Typ" jeder Variablen.
Ein weiteres Detail, das hinzugefügt werden muss und das nützlich sein kann, ist, dass var_dump sehr lange Texte abschneidet, ... anzeigt und die verbleibende Länge angibt, zum Beispiel: sogar '... (Länge = 4482) Wenn Sie Echo verwenden, geschieht dies nicht.
Yordan
Antworten:
186
printund echosind mehr oder weniger gleich; Sie sind beide Sprachkonstrukte, die Zeichenfolgen anzeigen. Die Unterschiede sind subtil: printhat einen Rückgabewert von 1, sodass er in Ausdrücken verwendet werden kann, während er echoeinen voidRückgabetyp hat; echokann mehrere Parameter annehmen, obwohl eine solche Verwendung selten ist; echoist etwas schneller alsprint . (Ich persönlich benutze immer echo, nie print.)
var_dumpdruckt einen detaillierten Speicherauszug einer Variablen aus, einschließlich ihres Typs und des Typs aller Unterelemente (wenn es sich um ein Array oder ein Objekt handelt). print_rGibt eine Variable in einer besser lesbaren Form aus: Zeichenfolgen werden nicht in Anführungszeichen gesetzt, Typinformationen werden weggelassen, Arraygrößen werden nicht angegeben usw.
var_dumpist print_rmeiner Erfahrung nach normalerweise nützlicher als beim Debuggen. Dies ist besonders nützlich, wenn Sie nicht genau wissen, welche Werte / Typen Ihre Variablen enthalten. Betrachten Sie dieses Testprogramm:
@Shore - es ist etwas in die Sprache eingebaut, das keine Funktion ist. Sie sind im Allgemeinen sehr schnell und funktionieren nicht genau wie normale Funktionen.
Alex
3
Zwei Jahre später bearbeitet, um die in diesen Kommentaren festgestellten Ungenauigkeiten zu korrigieren. Vielen Dank, ich muss am 7. Juni 10 geschlafen haben. ;-)
Gibt eine oder mehrere durch Kommas getrennte Zeichenfolgen aus
Kein Rückgabewert
z.B echo "String 1", "String 2"
drucken
Gibt nur eine einzelne Zeichenfolge aus
Gibt zurück 1, damit es in einem Ausdruck verwendet werden kann
z.B print "Hello"
oder, if ($expr && print "foo")
print_r ()
Gibt ein für Menschen lesbare Repräsentation eines einem Wert
Akzeptiert nicht nur Zeichenfolgen, sondern auch andere Typen, einschließlich Arrays und Objekte, und formatiert sie so, dass sie lesbar sind
Nützlich beim Debuggen
Kann seine Ausgabe als Rückgabewert zurückgeben (anstatt zu wiederholen), wenn das zweite optionale Argument angegeben wird
var_dump ()
Gibt eine lesbare Darstellung eines oder mehrerer durch Kommas getrennter Werte aus
Akzeptiert nicht nur Zeichenfolgen, sondern auch andere Typen, einschließlich Arrays und Objekte, und formatiert sie so, dass sie lesbar sind
Verwendet ein anderes Ausgabeformat print_r(), um beispielsweise auch den Wertetyp zu drucken
Nützlich beim Debuggen
Kein Rückgabewert
var_export ()
Gibt einen für Menschen lesbaren und PHP-ausführbare Darstellung jedes einen Wert
Akzeptiert nicht nur Zeichenfolgen, sondern auch andere Typen, einschließlich Arrays und Objekte, und formatiert sie so, dass sie lesbar sind
Verwendet ein anderes Ausgabeformat als beide print_r()und var_dump()- die resultierende Ausgabe ist gültiger PHP-Code!
Nützlich beim Debuggen
Kann seine Ausgabe als Rückgabewert zurückgeben (anstatt zu wiederholen), wenn das zweite optionale Argument angegeben wird
Anmerkungen:
Obwohl printes in einem Ausdruck verwendet werden kann, empfehle ich, dies zu vermeiden, da dies die Lesbarkeit des Codes beeinträchtigt (und es unwahrscheinlich ist, dass es jemals nützlich sein wird). Die Vorrangregeln bei der Interaktion mit anderen Operatoren können ebenfalls verwirrend sein. Aus diesem Grund habe ich persönlich nie einen Grund, es zu überarbeiten echo.
Während echound printsind Sprachkonstrukte print_r()und var_dump()/ var_export()oder reguläre Funktionen. Sie benötigen keine Klammern, um die Argumente in echooder einzuschließen print(und wenn Sie sie verwenden, werden sie wie in einem Ausdruck behandelt).
Während var_export()gültiger PHP-Code zurückgegeben wird, mit dem Werte später zurückgelesen werden können, kann es aufgrund der Verwendung einfacher sein, Sicherheitslücken einzuführen, wenn Sie sich für Produktionscode darauf verlassen eval(). Es ist besser, ein Format wie JSON zu verwenden, um Werte zu speichern und zurückzulesen. Die Geschwindigkeit wird vergleichbar sein.
Nur eine kurze Anmerkung darüber, wann Sie die echo $a, $b;Syntax möchten, wenn Sie dies nur tun können echo $a . $b;: Wenn entweder $ a oder $ b wirklich große Zeichenfolgen sind, benötigt letzterer zusätzlichen Speicher und Zeit, um eine separate verkettete Version der Zeichenfolgen im Speicher davor zu erstellen kann entweder an den Browser ausgeben.
Thomasrutter
Natürlich können Sie auch nur verwenden echo $a; echo $b;.
Thomasrutter
16
Nur um Johns Antwort zu ergänzen , echosollte dies die einzige sein, mit der Sie Inhalte auf die Seite drucken.
printist etwas langsamer. var_dump()und print_r()sollte nur zum Debuggen verwendet werden.
Erwähnenswert ist auch, dass print_r()und var_dump()wird standardmäßig wiedergegeben, fügen Sie print_r()mindestens ein zweites Argument hinzu , das als wahr ausgewertet wird, damit es stattdessen zurückkehrt, z print_r($array, TRUE).
Der Unterschied zwischen Echo und Rückkehr ist:
echo: Druckt den Wert sofort auf die Ausgabe.
Rückgabe: Gibt die Ausgabe der Funktion als Zeichenfolge zurück. Nützlich für die Protokollierung usw.
Nur weil Sie das Problem angesprochen haben, was ist der Unterschied zwischen echoing und returning?
David sagt, Monica
2
wow, ich wünschte, ich wüsste etwas über den Rückgabeparameter :( Grundsätzlich können Sie $ foo = print_r ($ array, true) ausführen und auf andere Weise verwenden (in ein Protokoll, eine Tabelle usw.)
FryGuy
Ich habe den print_rRückgabeparameter ziemlich oft verwendet, während ich PHP programmiert habe . Ich neigte jedoch dazu zu schreiben print_r( $foo, 1 );. Es ist schneller zu tippen;) Und darüber interessiert mich die Lesbarkeit print_rnicht so sehr, da ich finde, dass der Name auch nicht sehr aussagekräftig ist.
Exhuma
var_dump()unterstützt das zweite Argument nicht, sodass es einen Wert zurückgeben kann print_r(), da var_dump()mehrere Argumente für die Ausgabe akzeptiert werden können.
Thomasrutter
@ Thomasrutter Stimmt, nicht sicher, warum ich das geschrieben habe.
Der Unterschied zwischen echo , print , print_r und var_dump ist sehr einfach.
Echo
Echo ist eigentlich keine Funktion, sondern ein Sprachkonstrukt, mit dem die Ausgabe gedruckt wird. Es ist geringfügig schneller als der Druck.
echo "Hello World";// this will print Hello World
echo "Hello ","World";// Multiple arguments - this will print Hello World
$var_1=55;
echo "$var_1";// this will print 55
echo "var_1=".$var_1;// this will print var_1=55
echo 45+$var_1;// this will print 100
$var_2="PHP";
echo "$var_2";// this will print PHP
$var_3=array(99,98,97)// Arrays are not possible with echo (loop or index value required)
$var_4=array("P"=>"3","J"=>"4");// Arrays are not possible with echo (loop or index value required)
Sie können die Echo-Anweisung auch mit oder ohne Parenthese verwenden
echo ("Hello World");// this will print Hello World
drucken
Genau wie das Echo- Konstrukt ist auch das Drucken ein Sprachkonstrukt und keine echte Funktion. Der Unterschied zwischen Echo und Print besteht darin, dass print nur ein einziges Argument akzeptiert und print immer 1 zurückgibt. Während echo keinen Rückgabewert hat. Die print- Anweisung kann also in Ausdrücken verwendet werden.
print"Hello World";// this will print Hello Worldprint"Hello ","World";// Multiple arguments - NOT POSSIBLE with print
$var_1=55;print"$var_1";// this will print 55print"var_1=".$var_1;// this will print var_1=55print45+$var_1;// this will print 100
$var_2="PHP";print"$var_2";// this will print PHP
$var_3=array(99,98,97)// Arrays are not possible with print (loop or index value required)
$var_4=array("P"=>"3","J"=>"4");// Arrays are not possible with print (loop or index value required)
Genau wie Echo kann Print mit oder ohne Klammern verwendet werden.
print("Hello World");// this will print Hello World
print_r
Mit der Funktion print_r () werden lesbare Informationen zu einer Variablen gedruckt. Wenn das Argument ein Array ist, druckt die Funktion print_r () ihre Schlüssel und Elemente (dasselbe gilt für Objekte).
print_r ("Hello World");// this will print Hello World
$var_1=55;
print_r ("$var_1");// this will print 55
print_r ("var_1=".$var_1);// this will print var_1=55
print_r (45+$var_1);// this will print 100
$var_2="PHP";
print_r ("$var_2");// this will print PHP
$var_3=array(99,98,97)// this will print Array ( [0] => 1 [1] => 2 [2] => 3 )
$var_4=array("P"=>"3","J"=>"4");// this will print Array ( [P] => 3 [J] => 4 )
var_dump
Die Funktion var_dump wird normalerweise zum Debuggen verwendet und gibt die Informationen (Typ und Wert) zu einer Variablen / einem Array / einem Objekt aus.
var_dump($var_1);// this will print int(5444)
var_dump($var_2);// this will print string(5) "Hello"
var_dump($var_3);// this will print array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
var_dump($var_4);// this will print array(2) { ["P"]=> string(1) "3" ["J"]=> string(1) "4" }
Es gibt so viele Probleme mit dieser Antwort. printist keine echte Funktion, es ist ein Sprachkonstrukt wie Echo. Es kann auch als Anweisung verwendet werden. echoist keine Aussage und kann auch nicht in einer verwendet werden. printerfordert weder Klammern, noch verwenden Echo oder Druck die Klammern wie eine Funktion. Sie haben auch einen der Hauptunterschiede übersehen: echo akzeptiert mehrere durch Kommas getrennte Zeichenfolgen.
Thomasrutter
2
... und Sie haben diese Antwort eingereicht, als bereits mehrere Antworten vorhanden waren und die richtigen Informationen enthielten .
Thomasrutter
2
** Echocan akzeptiert mehrere Ausdrücke, während der Druck nicht möglich ist. Die PHP-Funktion Print_r () wird verwendet, um ein Array in einer für Menschen lesbaren Form zurückzugeben. Es ist einfach geschrieben als
echo: echo ist ein Sprachkonstrukt, bei dem keine Klammern verwendet werden müssen. Es kann eine beliebige Anzahl von Parametern annehmen und void zurückgeben.
print: Es handelt sich um ein Sprachkonstrukt, bei dem keine Klammern verwendet werden müssen. Es wird nur ein Parameter verwendet und zurückgegeben
1 always.intprint(param1);print"test1";print"test1","test2";// It will give syntax error
prinf: Dies ist eine Funktion, die mindestens eine Zeichenfolge und einen Formatstil verwendet und die Länge der Ausgabezeichenfolge zurückgibt.
int printf($string,$s);
$s="Shailesh";
$i= printf("Hello %s how are you?",$s);
echo $i;Output:HelloShailesh how are you?27
echo returns void so its execution is faster than printand printf
print_r () kann einen Wert ausdrucken, aber auch, wenn der zweite Flag-Parameter übergeben wird und TRUE ist - er gibt das gedruckte Ergebnis als Zeichenfolge zurück und sendet nichts an die Standardausgabe. Über var_dump. Wenn der XDebug-Debugger installiert ist, werden die Ausgabeergebnisse viel besser lesbar und verständlicher formatiert.
Antworten:
print
undecho
sind mehr oder weniger gleich; Sie sind beide Sprachkonstrukte, die Zeichenfolgen anzeigen. Die Unterschiede sind subtil:print
hat einen Rückgabewert von 1, sodass er in Ausdrücken verwendet werden kann, während erecho
einenvoid
Rückgabetyp hat;echo
kann mehrere Parameter annehmen, obwohl eine solche Verwendung selten ist;echo
ist etwas schneller alsprint
. (Ich persönlich benutze immerecho
, nieprint
.)var_dump
druckt einen detaillierten Speicherauszug einer Variablen aus, einschließlich ihres Typs und des Typs aller Unterelemente (wenn es sich um ein Array oder ein Objekt handelt).print_r
Gibt eine Variable in einer besser lesbaren Form aus: Zeichenfolgen werden nicht in Anführungszeichen gesetzt, Typinformationen werden weggelassen, Arraygrößen werden nicht angegeben usw.var_dump
istprint_r
meiner Erfahrung nach normalerweise nützlicher als beim Debuggen. Dies ist besonders nützlich, wenn Sie nicht genau wissen, welche Werte / Typen Ihre Variablen enthalten. Betrachten Sie dieses Testprogramm:Mit
print_r
kann man den Unterschied zwischen0
und0.0
, undfalse
und nicht erkennen''
:quelle
Echo
Kein Rückgabewert
z.B
echo "String 1", "String 2"
drucken
Gibt zurück
1
, damit es in einem Ausdruck verwendet werden kannz.B
print "Hello"
oder,
if ($expr && print "foo")
print_r ()
var_dump ()
print_r()
, um beispielsweise auch den Wertetyp zu druckenvar_export ()
print_r()
undvar_dump()
- die resultierende Ausgabe ist gültiger PHP-Code!Anmerkungen:
print
es in einem Ausdruck verwendet werden kann, empfehle ich, dies zu vermeiden, da dies die Lesbarkeit des Codes beeinträchtigt (und es unwahrscheinlich ist, dass es jemals nützlich sein wird). Die Vorrangregeln bei der Interaktion mit anderen Operatoren können ebenfalls verwirrend sein. Aus diesem Grund habe ich persönlich nie einen Grund, es zu überarbeitenecho
.echo
undprint
sind Sprachkonstrukteprint_r()
undvar_dump()
/var_export()
oder reguläre Funktionen. Sie benötigen keine Klammern, um die Argumente inecho
oder einzuschließenprint
(und wenn Sie sie verwenden, werden sie wie in einem Ausdruck behandelt).var_export()
gültiger PHP-Code zurückgegeben wird, mit dem Werte später zurückgelesen werden können, kann es aufgrund der Verwendung einfacher sein, Sicherheitslücken einzuführen, wenn Sie sich für Produktionscode darauf verlasseneval()
. Es ist besser, ein Format wie JSON zu verwenden, um Werte zu speichern und zurückzulesen. Die Geschwindigkeit wird vergleichbar sein.quelle
echo $a, $b;
Syntax möchten, wenn Sie dies nur tun könnenecho $a . $b;
: Wenn entweder $ a oder $ b wirklich große Zeichenfolgen sind, benötigt letzterer zusätzlichen Speicher und Zeit, um eine separate verkettete Version der Zeichenfolgen im Speicher davor zu erstellen kann entweder an den Browser ausgeben.echo $a; echo $b;
.Nur um Johns Antwort zu ergänzen ,
echo
sollte dies die einzige sein, mit der Sie Inhalte auf die Seite drucken.print
ist etwas langsamer.var_dump()
undprint_r()
sollte nur zum Debuggen verwendet werden.Erwähnenswert ist auch, dass
print_r()
undvar_dump()
wird standardmäßig wiedergegeben, fügen Sieprint_r()
mindestens ein zweites Argument hinzu , das als wahr ausgewertet wird, damit es stattdessen zurückkehrt, zprint_r($array, TRUE)
.Der Unterschied zwischen Echo und Rückkehr ist:
quelle
echo
ing undreturn
ing?print_r
Rückgabeparameter ziemlich oft verwendet, während ich PHP programmiert habe . Ich neigte jedoch dazu zu schreibenprint_r( $foo, 1 );
. Es ist schneller zu tippen;) Und darüber interessiert mich die Lesbarkeitprint_r
nicht so sehr, da ich finde, dass der Name auch nicht sehr aussagekräftig ist.var_dump()
unterstützt das zweite Argument nicht, sodass es einen Wert zurückgeben kannprint_r()
, davar_dump()
mehrere Argumente für die Ausgabe akzeptiert werden können.Kein Rückgabetyp
Rückgabetyp haben
Ausgaben wie formatiert,
quelle
Der Unterschied zwischen echo , print , print_r und var_dump ist sehr einfach.
Echo ist eigentlich keine Funktion, sondern ein Sprachkonstrukt, mit dem die Ausgabe gedruckt wird. Es ist geringfügig schneller als der Druck.
Sie können die Echo-Anweisung auch mit oder ohne Parenthese verwenden
Genau wie das Echo- Konstrukt ist auch das Drucken ein Sprachkonstrukt und keine echte Funktion. Der Unterschied zwischen Echo und Print besteht darin, dass print nur ein einziges Argument akzeptiert und print immer 1 zurückgibt. Während echo keinen Rückgabewert hat. Die print- Anweisung kann also in Ausdrücken verwendet werden.
Genau wie Echo kann Print mit oder ohne Klammern verwendet werden.
Mit der Funktion print_r () werden lesbare Informationen zu einer Variablen gedruckt. Wenn das Argument ein Array ist, druckt die Funktion print_r () ihre Schlüssel und Elemente (dasselbe gilt für Objekte).
Die Funktion var_dump wird normalerweise zum Debuggen verwendet und gibt die Informationen (Typ und Wert) zu einer Variablen / einem Array / einem Objekt aus.
quelle
Echo :
Es ist eine Anweisung, keine Funktion. Kein Rückgabewert
Nicht erforderlich die Klammern
Array nicht drucken
Drucken
Es ist eine echte Funktion
Geben Sie Typ 1 zurück
Benötigte die Klammern
Array nicht drucken
Print_r
Drucken Sie in lesbarem Format
Zeichenfolge nicht in Anführungszeichen
Nicht Detailinformationen von Variablen wie Typ und alle
var_dump
Alle Dump-Informationen von Variablen wie Elementtyp und Unterelement
quelle
print
ist keine echte Funktion, es ist ein Sprachkonstrukt wie Echo. Es kann auch als Anweisung verwendet werden.echo
ist keine Aussage und kann auch nicht in einer verwendet werden.print
erfordert weder Klammern, noch verwenden Echo oder Druck die Klammern wie eine Funktion. Sie haben auch einen der Hauptunterschiede übersehen: echo akzeptiert mehrere durch Kommas getrennte Zeichenfolgen.** Echocan akzeptiert mehrere Ausdrücke, während der Druck nicht möglich ist. Die PHP-Funktion Print_r () wird verwendet, um ein Array in einer für Menschen lesbaren Form zurückzugeben. Es ist einfach geschrieben als
quelle
echo: echo ist ein Sprachkonstrukt, bei dem keine Klammern verwendet werden müssen. Es kann eine beliebige Anzahl von Parametern annehmen und void zurückgeben.
print: Es handelt sich um ein Sprachkonstrukt, bei dem keine Klammern verwendet werden müssen. Es wird nur ein Parameter verwendet und zurückgegeben
prinf: Dies ist eine Funktion, die mindestens eine Zeichenfolge und einen Formatstil verwendet und die Länge der Ausgabezeichenfolge zurückgibt.
quelle
print_r()
wird zum Drucken des Arrays in einem für Menschen lesbaren Format verwendet.quelle
print_r () kann einen Wert ausdrucken, aber auch, wenn der zweite Flag-Parameter übergeben wird und TRUE ist - er gibt das gedruckte Ergebnis als Zeichenfolge zurück und sendet nichts an die Standardausgabe. Über var_dump. Wenn der XDebug-Debugger installiert ist, werden die Ausgabeergebnisse viel besser lesbar und verständlicher formatiert.
quelle
beide sind Sprachkonstrukte. echo gibt void zurück und print gibt zurück 1. echo wird als etwas schneller als print angesehen.
quelle