php var_dump () vs print_r ()


297

¿Cuál es la diferencia entre var_dump()y print_r()en términos de escupir una matriz como cadena?

Respuestas:


355

La var_dumpfunción muestra información estructurada sobre variables / expresiones, incluido su tipo y valor . Las matrices se exploran recursivamente con valores sangrados para mostrar la estructura. También muestra qué valores de matriz y propiedades de objeto son referencias.

La print_r()muestra información sobre una variable en una manera que sea legible por los seres humanos. Los valores de la matriz se presentarán en un formato que muestre claves y elementos . Se usa notación similar para los objetos.

Ejemplo:

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

var_dump($obj) se mostrará debajo de la salida en la pantalla.

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

Y, print_r($obj)se mostrará debajo de la salida en la pantalla.

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

Más información


76
print_r (null) no devolverá nada donde var_dump (null) devuelve NULL, lo cual es útil al depurar
rosh3000

77
¿Puedes extender tu respuesta con 'var_export'?
joryl

1
Dos ventajas de var_dump () es que la información volcada se incluye automáticamente en un elemento pre. Al usar var_dump () puede ver que cada tipo tiene su propio color. Mejora de la legibilidad.
Julian

3
@Julian solo si xdebug está instalado
Leif Neland

57

En general, la print_r( )salida es más agradable, más concisa y más fácil de leer, es decir, más legible para los humanos, pero no puede mostrar los tipos de datos.

Con print_r()usted también puede almacenar la salida en una variable:

$output = print_r($array, true);

que var_dump()no puede hacer Sin embargo, var_dump()puede mostrar tipos de datos.


99
var_dump () se puede almacenar en una variable, aunque es un poco más feo: stackoverflow.com/questions/139474/…
SgtPooki

77
también puede ser 'brother' var_export () si necesita guardar
CSᵠ

21

var_dump() le mostrará el tipo de cosa, así como lo que contiene.

Entonces obtendrás => El (string)"var" ejemplo está aquí.

print_r() solo dará salida al contenido.

Salida => El "var" ejemplo está aquí.


12
Creo que el mejor ejemplo sería var_dump(0.0);qué salidas float(0)frente a print_r(0.0);qué salidas 0(lo que lleva a una posible confusión de tipos) ...
ircmaxell

13

Si está preguntando cuándo debe usar qué, generalmente lo uso print_r()para mostrar valores y var_dump()para cuando tiene problemas con los tipos de variables.


8

var_dumpmuestra información estructurada sobre el objeto / variable. Esto incluye tipo y valores. Las print_rmatrices similares se recursan y sangran.

print_rmuestra información legible por humanos sobre los valores con un formato que presenta claves y elementos para matrices y objetos.

Lo más importante a tener en cuenta es var_dumpel tipo de salida, así como los valores, mientras print_rque no.


5

Diferencias significativas entre var_dumpyprint_r

Ambas funciones vuelcan información sobre la variable , pero var_dumpmúltiples parámetros que serán volcados, donde como print_rpuede tomar dos parámetros, de los cuales el primer parámetro es la variable que desea volcar y el segundo es un valor booleano.

var_dumpno puede devolver ningún valor, solo puede volcar / imprimir los valores donde como print_r puede devolver la información de la variable si establecemos el segundo parámetro de print_ren verdadero . El valor devuelto de print_restará en formato de cadena .

La información impresa por print_res mucho más en formato legible donde var_dumpimprime valores sin procesar.

print_rLa función se puede usar en muchos contextos donde var_dumpse puede usar en propósitos de depuración principalmente porque no puede devolver valor.


1
vardumptoma uno o más argumentos, y cada uno será abandonado.
obispo

@ obispo, sí, tienes razón, puede tomar más argumentos, pero no devuelve ningún valor
Akshay Khale

entonces arregla tu respuesta?
Govind Rai

Está arreglado @GovindRai
Akshay Khale el

"var_dump no puede devolver ningún valor"? Sí puede. Un poco ob_start(); var_dump($var); $dump=ob_get_clean();
Sinus Mackowaty

3

Además, recomendaría poner la salida de var_dump () o printr en una etiqueta previa cuando se envíe a un navegador.

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

Dará un resultado más legible.


2

var_dump($var) muestra detalles en profundidad, proporcionando detalles adicionales de

  • tipo de datos del valor (incluidos los elementos descendientes)
  • cantidad de elementos en una variable
  • longitud del valor

1

Con matrices grandes, print_r puede mostrar mucha más información de la que es útil. Puede truncarlo así, mostrando los primeros 2000 caracteres o cuantos necesite.

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

1

var_dump (): -

  1. Esta función muestra información estructurada sobre una o más expresiones que incluye su tipo y valor. Las matrices y los objetos se exploran recursivamente con valores sangrados para mostrar la estructura.
  2. Esta función muestra el número de elemento en una variable.
  3. Esta función muestra la longitud de la variable.
  4. No se puede devolver el valor, solo se imprime el valor.
  5. Se utiliza con fines de depuración.

Ejemplo:

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

salida: -

   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 información legible para humanos sobre una variable.
  2. No muestra el número de elemento en una variable como var_dump ().
  3. No mostrar la longitud de la variable en una variable como var_dump ().
  4. Devuelve el valor si establecemos el segundo parámetro en verdadero en printf_r ().

Ejemplo:

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

Salida:-

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

"No se puede devolver el valor, solo se imprime el valor". Sí puede. Un poco ob_start(); var_dump($var); $dump=ob_get_clean();
Sinus Mackowaty

0

print_r () y var_dump () son funciones de depuración de matriz utilizadas en PHP para fines de depuración. La función print_r () devuelve las claves de la matriz y sus miembros como Array ([clave] = valor) mientras que la función var_dump () devuelve la lista de matrices con sus claves de matriz con tipo de datos y longitud, por ejemplo, Array (array_length) {[0] = cadena (1) 'a'}.


0

Podemos pasar múltiples parámetros con var_dump como:

var_dump("array1",$array1,"array2",$array2);
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.