php var_dump () vs print_r ()


297

Quelle est la différence entre var_dump()et print_r()en termes de crachement d'un tableau sous forme de chaîne?

Réponses:


355

La var_dumpfonction affiche des informations structurées sur les variables / expressions, y compris son type et sa valeur . Les tableaux sont explorés récursivement avec des valeurs en retrait pour montrer la structure. Il montre également quelles valeurs de tableau et quelles propriétés d'objet sont des références.

Le print_r()affiche des informations sur une variable d'une manière lisible par les humains. les valeurs de tableau seront présentées dans un format qui montre les clés et les éléments . Une notation similaire est utilisée pour les objets.

Exemple:

$obj = (object) array('qualitypoint', 'technologies', 'India');

var_dump($obj) s'affiche sous la sortie à l'écran.

object(stdClass)#1 (3) {
 [0]=> string(12) "qualitypoint"
 [1]=> string(12) "technologies"
 [2]=> string(5) "India"
}

Et, print_r($obj)s'affichera sous la sortie à l'écran.

stdClass Object ( 
 [0] => qualitypoint
 [1] => technologies
 [2] => India
)

Plus d'informations


76
print_r (null) ne retournera rien alors que var_dump (null) retourne NULL qui est utile lors du débogage
rosh3000

7
Pouvez-vous étendre votre réponse avec 'var_export'?
joryl

1
Var_dump () présente deux avantages: les informations sauvegardées sont automatiquement incluses dans un élément pré. Lorsque vous utilisez var_dump (), vous pouvez voir que chaque type a sa propre couleur. Amélioration de la lisibilité.
Julian

3
@Julian uniquement si xdebug est installé
Leif Neland

57

En général, la print_r( )sortie est plus agréable, plus concise et plus facile à lire, c'est-à-dire plus lisible par l'homme mais ne peut pas afficher les types de données.

Avec print_r()vous pouvez également stocker la sortie dans une variable:

$output = print_r($array, true);

qui var_dump()ne peut pas faire. Pourtant, var_dump()peut montrer les types de données.


9
var_dump () peut être stocké dans une variable bien qu'il soit un peu plus laid: stackoverflow.com/questions/139474/…
SgtPooki

7
vous pouvez aussi c'est 'brother' var_export () si vous avez besoin de sauvegarder
CSᵠ

21

var_dump() vous montrera le type de la chose ainsi que son contenu.

Vous obtiendrez donc => L' (string)"var" exemple est ici.

print_r() affichera simplement le contenu.

Serait sortie => "var" Exemple est ici.


12
Je pense que le meilleur exemple serait var_dump(0.0);quelles sorties float(0)vs print_r(0.0);quelles sorties 0(ce qui conduit à une confusion de type possible) ...
ircmaxell

13

Si vous demandez quand vous devez utiliser quoi, j'utilise généralement print_r()pour afficher les valeurs et var_dump()pour les problèmes avec les types de variables.


8

var_dumpaffiche des informations structurées sur l'objet / la variable. Cela inclut le type et les valeurs. Comme les print_rtableaux sont récursifs et indentés.

print_raffiche des informations lisibles par l'homme sur les valeurs dans un format présentant les clés et les éléments des tableaux et des objets.

La chose la plus importante à noter est var_dumple type de sortie ainsi que les valeurs alors que ce print_rn'est pas le cas.


5

Différences importantes entre var_dumpetprint_r

les deux fonctions exportent des informations sur la variable , mais var_dumpplusieurs paramètres qui seront sauvegardés, où as print_rpeuvent prendre deux paramètres dont le premier paramètre est la variable que vous souhaitez sauvegarder et le second est une valeur booléenne.

var_dumpne peut renvoyer aucune valeur, il peut uniquement vider / imprimer les valeurs où print_r peut renvoyer les informations de variable si nous définissons le second paramètre de print_rsur true . La valeur renvoyée print_rsera au format chaîne .

Les informations imprimées par print_rsont beaucoup plus dans un format lisible où as var_dumpimprime des valeurs brutes.

print_rLa fonction peut être utilisée dans de nombreux contextes où as var_dumppeut être utilisée à des fins de débogage, car elle ne peut pas renvoyer de valeur.


1
vardumpprend un ou plusieurs arguments, et chacun sera vidé.
évêque

@bishop, oui vous avez raison, cela peut prendre plus d'arguments, mais cela ne retourne aucune valeur
Akshay Khale

alors corrigez votre réponse?
Govind Rai

C'est corrigé @GovindRai
Akshay Khale

"var_dump ne peut retourner aucune valeur"? Oui il peut. Un peu. ob_start(); var_dump($var); $dump=ob_get_clean();
Sinus Mackowaty

3

Je recommanderais également de placer la sortie de var_dump () ou printr dans une balise pre lors de la sortie vers un navigateur.

print "<pre>";
print_r($dataset);
print "</pre>";

Donnera un résultat plus lisible.


2

var_dump($var) montre des détails en profondeur, en fournissant des détails supplémentaires sur

  • type de données de la valeur (y compris les éléments descendants)
  • nombre d'éléments dans une variable
  • longueur de la valeur

1

Avec de grands tableaux, print_r peut afficher beaucoup plus d'informations qu'il n'est utile. Vous pouvez le tronquer comme ceci, en montrant les 2000 premiers caractères ou autant que vous en avez besoin.

  echo "<pre>" . substr(print_r($dataset, 1), 0, 2000) . "</pre>";

1

var_dump (): -

  1. Cette fonction affiche des informations structurées sur une ou plusieurs expressions qui incluent son type et sa valeur. Les tableaux et les objets sont explorés récursivement avec des valeurs en retrait pour montrer la structure.
  2. Cette fonction affiche le nombre d'éléments dans une variable.
  3. Cette fonction affiche la longueur de la variable.
  4. Impossible de renvoyer la valeur uniquement imprimer la valeur.
  5. il est utilisé à des fins de débogage.

Exemple :-

<?php
$a = array(1, 2, array("a", "b", "c"));
var_dump($a);
?>

production :-

   array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
    [2]=>
    string(1) "c"
  }
}

print_r (): -

  1. Imprime des informations lisibles par l'homme sur une variable.
  2. N'affiche pas le nombre d'éléments dans une variable comme var_dump ().
  3. N'affiche pas la longueur de la variable dans une variable comme var_dump ().
  4. Renvoie la valeur si nous définissons le deuxième paramètre sur true dans printf_r ().

Exemple :-

<pre>
<?php
$a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x', 'y', 'z'));
print_r ($a);
?>
</pre>

Production:-

<pre>
Array
(
    [a] => apple
    [b] => banana
    [c] => Array
        (
            [0] => x
            [1] => y
            [2] => z
        )
)
</pre>

"Impossible de renvoyer la valeur uniquement imprimer la valeur." Oui il peut. Un peu. ob_start(); var_dump($var); $dump=ob_get_clean();
Sinus Mackowaty

0

print_r () et var_dump () sont des fonctions de débogage de tableau utilisées en PHP à des fins de débogage. La fonction print_r () renvoie les clés du tableau et ses membres sous forme de tableau ([clé] = valeur) tandis que la fonction var_dump () renvoie la liste des tableaux avec ses clés de tableau avec le type et la longueur des données, par exemple, Array (tableau_longueur) {[0] = chaîne (1) 'a'}.


0

Nous pouvons passer plusieurs paramètres avec var_dump comme:

var_dump("array1",$array1,"array2",$array2);
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.