Parfois, il est plus facile de demander à quelqu'un d'autre de mieux comprendre que de lire des manuels.
Deepak Lamichhane
11
@ Vos réponses Common Sense SO sont souvent plus claires, plus concises, exploitables et fondamentalement toujours plus faciles à consulter que le manuel PHP.
Mark Fox
Réponses:
194
var_dump sert à des fins de débogage. var_dumpimprime toujours le résultat.
print_r sert également à des fins de débogage, mais n'inclut pas le type de membre. C'est une bonne idée à utiliser si vous connaissez les types d'éléments dans votre tableau, mais cela peut être trompeur dans le cas contraire. print_rpar défaut, imprime le résultat, mais autorise le retour sous forme de chaîne à la place en utilisant le$returnparamètrefacultatif.
Array([0]=>[1]=>[2]=>42[3]=>Array([0]=>42))
var_export imprime un code php valide. Utile si vous avez calculé des valeurs et que vous souhaitez que les résultats soient une constante dans un autre script. Notez quevar_exportne peut pas gérer les cycles de référence / tableaux récursifs, alors quevar_dumpet lesprint_rvérifier. var_exportpar défaut, imprime le résultat, mais autorise le retour sous forme de chaîne à la place en utilisant le$returnparamètrefacultatif.
Notez que var_export, en raison de sa nature, mourra d'une horrible mort récursive sur, eh bien, des tableaux récursifs. print_ret var_dump(cependant, pas tout à fait sûr de ce dernier, puisque je ne l'utilise généralement pas) n'ont pas ce problème. Alors ne le faites pas var_export($_GLOBALS);, par exemple (qui se contient). :)
pinkgothic
@ftrotter J'ai toujours pensé que le commentaire expliquerait bien cette curiosité, mais voilà, a ajouté une petite note à la réponse.
phihag
1
Il faut ajouter que vous pouvez faire en sorte que print_r () et var_export () retournent une chaîne au lieu de la sortir, alors que var_dump () ne peut pas le faire. De plus, je n'aime pas var_export () car c'est déroutant - si vous essayez d'exporter une constante SOMECONST non définie, vous obtiendrez simplement une chaîne de texte 'SOMECONST'. Donc, il ne dira pas NULL, 0, "", mais il supposera en fait que c'est une chaîne (et je suppose qu'il jettera également un NOTICE).
userfuser
1
var_export est idéal pour représenter une chaîne en toute sécurité, comme la protection contre les guillemets / antislash.
dkellner
1
Personnellement, je préfère la var_dumpsortie. Dommage qu'il ne permette pas de renvoyer la sortie sous forme de chaîne. En tant que tel, je peux me rapporter au sentiment de @ iconoclast dans le commentaire ci-dessus. Mais avoir à choisir var_exportplus var_dumppour ce cas d'utilisation est acceptable pour moi. Par souci d'exhaustivité, notez cette demande de fonctionnalité associée .
Paul van Leeuwen
3
var_dumpet var_exportraconter comme ça (du manuel )
var_export () obtient des informations structurées sur la variable donnée. Il est similaire à var_dump () à une exception près: la représentation renvoyée est du code PHP valide.
Ils diffèrent de print_rcelui qui var_dumpexporte plus d'informations, comme le type de données et la taille des éléments.
Réponses:
var_dump sert à des fins de débogage.
var_dump
imprime toujours le résultat.print_r sert également à des fins de débogage, mais n'inclut pas le type de membre. C'est une bonne idée à utiliser si vous connaissez les types d'éléments dans votre tableau, mais cela peut être trompeur dans le cas contraire.
print_r
par défaut, imprime le résultat, mais autorise le retour sous forme de chaîne à la place en utilisant le$return
paramètrefacultatif.var_export imprime un code php valide. Utile si vous avez calculé des valeurs et que vous souhaitez que les résultats soient une constante dans un autre script. Notez que
var_export
ne peut pas gérer les cycles de référence / tableaux récursifs, alors quevar_dump
et lesprint_r
vérifier.var_export
par défaut, imprime le résultat, mais autorise le retour sous forme de chaîne à la place en utilisant le$return
paramètrefacultatif.Personnellement, je pense que
var_export
c'est le meilleur compromis entre concis et précis.la source
var_export
, en raison de sa nature, mourra d'une horrible mort récursive sur, eh bien, des tableaux récursifs.print_r
etvar_dump
(cependant, pas tout à fait sûr de ce dernier, puisque je ne l'utilise généralement pas) n'ont pas ce problème. Alors ne le faites pasvar_export($_GLOBALS);
, par exemple (qui se contient). :)var_dump
sortie. Dommage qu'il ne permette pas de renvoyer la sortie sous forme de chaîne. En tant que tel, je peux me rapporter au sentiment de @ iconoclast dans le commentaire ci-dessus. Mais avoir à choisirvar_export
plusvar_dump
pour ce cas d'utilisation est acceptable pour moi. Par souci d'exhaustivité, notez cette demande de fonctionnalité associée .var_dump
etvar_export
raconter comme ça (du manuel )Ils diffèrent de
print_r
celui quivar_dump
exporte plus d'informations, comme le type de données et la taille des éléments.la source