131 votes

Différence entre var_dump,var_export & print_r

Quelle est la différence entre var_dump , var_export y print_r ?

14 votes

Parfois, il est plus facile de demander à quelqu'un d'autre de mieux comprendre que de lire des manuels.

12 votes

Les réponses de votre S.O. Common Sense sont souvent plus claires, plus concises, plus faciles à mettre en œuvre et plus faciles à consulter que le manuel PHP.

199voto

phihag Points 89765

var_dump est destiné à des fins de débogage. var_dump imprime toujours le résultat.

// var_dump(array('', false, 42, array('42')));
array(4) {
  [0]=> string(0) ""
  [1]=> bool(false)
  [2]=> int(42)
  [3]=> array(1) {[0]=>string(2) "42")}
}

imprimer_r sert également à des fins de débogage, mais n'inclut pas le type du membre. C'est une bonne idée à utiliser si vous connaissez les types des éléments de votre tableau, mais cela peut être trompeur autrement. print_r imprime par défaut le résultat, mais permet de le retourner sous forme de chaîne de caractères en utilisant l'option $return paramètre.

Array (
    [0] =>
    [1] =>
    [2] => 42
    [3] => Array ([0] => 42)
)

var_export imprime un code php valide. Utile si vous avez calculé certaines valeurs et que vous voulez les résultats comme une constante dans un autre script. Notez que var_export ne peut pas gérer les cycles de référence/les tableaux récursifs, alors que var_dump y print_r vérifiez-les. var_export imprime par défaut le résultat, mais permet de le retourner sous forme de chaîne de caractères en utilisant l'option $return paramètre.

array (
  0 => '',
  1 => false,
  2 => 42,
  3 => array (0 => '42',),
)

Personnellement, je pense var_export est le meilleur compromis entre concision et précision.

52 votes

Notez que var_export de par sa nature, mourra d'une mort récursive horrible sur, eh bien, des tableaux récursifs. print_r y var_dump (bien que je ne sois pas parfaitement sûr du dernier, puisque je ne l'utilise pas habituellement) n'ont pas ce problème. Donc ne var_export($_GLOBALS); par exemple (qui se contient lui-même) :)

0 votes

@ftrotter J'ai toujours pensé que le commentaire expliquerait bien cette curiosité, mais voilà, j'ai ajouté une petite note à la réponse.

1 votes

Il faut ajouter que vous pouvez faire en sorte que print_r() et var_export() renvoient une chaîne de caractères au lieu de la sortir, alors que var_dump() ne peut pas le faire. De plus, je n'aime pas var_export() parce qu'elle est confuse - si vous essayez d'exporter une constante indéfinie SOMECONST, vous obtiendrez juste une chaîne de texte 'SOMECONST'. Donc il ne dira pas NULL, 0, "", mais il supposera qu'il s'agit d'une chaîne de caractères (et je suppose qu'il lancera aussi un NOTICE).

4voto

Nanne Points 35880

var_dump y var_export se rapportent comme ceci (du manuel )

var_export() obtient des informations structurées structurées sur la variable donnée. Elle est similaire à var_dump() avec une exception : la représentation retournée est du code PHP valide.

Ils diffèrent de print_r que var_dump exporte plus d'informations, comme le type de données et la taille des éléments.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X