print_r dient auch zu Debugging-Zwecken, enthält jedoch nicht den Typ des Mitglieds. Es ist eine gute Idee, wenn Sie die Arten von Elementen in Ihrem Array kennen, aber ansonsten irreführend sein können. print_rStandardmäßig wird das Ergebnis gedruckt, es kann jedoch stattdessen mithilfe des optionalen$returnParametersals Zeichenfolge zurückgegebenwerden.
Array([0]=>[1]=>[2]=>42[3]=>Array([0]=>42))
var_export druckt einen gültigen PHP-Code. Nützlich, wenn Sie einige Werte berechnet haben und die Ergebnisse als Konstante in einem anderen Skript anzeigen möchten. Beachten Sie, dassvar_exportReferenzzyklen / rekursive Arrays nicht verarbeitet werden können,var_dumpundprint_rüberprüfen Sie diese. var_exportStandardmäßig wird das Ergebnis gedruckt, es kann jedoch stattdessen mithilfe des optionalen$returnParametersals Zeichenfolge zurückgegebenwerden.
Beachten Sie, dass var_exportaufgrund seiner Natur ein schrecklicher rekursiver Tod auf rekursiven Arrays sterben wird. print_rund var_dump(obwohl ich mir bei letzterem nicht ganz sicher bin, da ich es normalerweise nicht benutze) habe dieses Problem nicht. Also var_export($_GLOBALS);zum Beispiel nicht (was sich selbst enthält). :)
pinkgothic
@ftrotter Ich dachte immer, der Kommentar würde diese Neugier gut erklären, aber los geht's, fügte der Antwort eine kurze Notiz hinzu.
Phihag
1
Es sollte hinzugefügt werden, dass Sie print_r () und var_export () veranlassen können, einen String zurückzugeben, anstatt ihn auszugeben, während var_dump () dies nicht kann. Außerdem mag ich var_export () nicht, da es verwirrend ist. Wenn Sie versuchen, eine undefinierte Konstante SOMECONST zu exportieren, erhalten Sie einfach eine Textzeichenfolge 'SOMECONST' zurück. Es wird also nicht NULL, 0, "" sagen, aber es wird tatsächlich davon ausgegangen, dass es sich um eine Zeichenfolge handelt (und ich nehme an, wirf auch einen HINWEIS).
Userfuser
1
var_export ist gut geeignet, um eine Zeichenfolge sicher darzustellen, z. B. den Anführungszeichen- / Backslash-Schutz.
dkellner
1
Persönlich bevorzuge ich var_dumpAusgabe. Schade, dass die Ausgabe nicht als Zeichenfolge zurückgegeben werden kann. Als solches kann ich mich im obigen Kommentar auf das Gefühl von @ iconoclast beziehen. Aber mit wählen , var_exportüber var_dumpfür diesen Anwendungsfall ist akzeptabel für mich. Beachten Sie der Vollständigkeit halber diese entsprechende Funktionsanforderung .
Paul van Leeuwen
3
var_dumpund var_exportbeziehen sich so (aus dem Handbuch )
var_export () erhält strukturierte Informationen über die angegebene Variable. Es ähnelt var_dump () mit einer Ausnahme: Die zurückgegebene Darstellung ist gültiger PHP-Code.
Sie unterscheiden sich davon, print_rdass var_dumpmehr Informationen wie der Datentyp und die Größe der Elemente exportiert werden.
Antworten:
var_dump dient zum Debuggen.
var_dump
druckt immer das Ergebnis.print_r dient auch zu Debugging-Zwecken, enthält jedoch nicht den Typ des Mitglieds. Es ist eine gute Idee, wenn Sie die Arten von Elementen in Ihrem Array kennen, aber ansonsten irreführend sein können.
print_r
Standardmäßig wird das Ergebnis gedruckt, es kann jedoch stattdessen mithilfe des optionalen$return
Parametersals Zeichenfolge zurückgegebenwerden.var_export druckt einen gültigen PHP-Code. Nützlich, wenn Sie einige Werte berechnet haben und die Ergebnisse als Konstante in einem anderen Skript anzeigen möchten. Beachten Sie, dass
var_export
Referenzzyklen / rekursive Arrays nicht verarbeitet werden können,var_dump
undprint_r
überprüfen Sie diese.var_export
Standardmäßig wird das Ergebnis gedruckt, es kann jedoch stattdessen mithilfe des optionalen$return
Parametersals Zeichenfolge zurückgegebenwerden.Persönlich denke ich,
var_export
ist der beste Kompromiss zwischen prägnant und präzise.quelle
var_export
aufgrund seiner Natur ein schrecklicher rekursiver Tod auf rekursiven Arrays sterben wird.print_r
undvar_dump
(obwohl ich mir bei letzterem nicht ganz sicher bin, da ich es normalerweise nicht benutze) habe dieses Problem nicht. Alsovar_export($_GLOBALS);
zum Beispiel nicht (was sich selbst enthält). :)var_dump
Ausgabe. Schade, dass die Ausgabe nicht als Zeichenfolge zurückgegeben werden kann. Als solches kann ich mich im obigen Kommentar auf das Gefühl von @ iconoclast beziehen. Aber mit wählen ,var_export
übervar_dump
für diesen Anwendungsfall ist akzeptabel für mich. Beachten Sie der Vollständigkeit halber diese entsprechende Funktionsanforderung .var_dump
undvar_export
beziehen sich so (aus dem Handbuch )Sie unterscheiden sich davon,
print_r
dassvar_dump
mehr Informationen wie der Datentyp und die Größe der Elemente exportiert werden.quelle