var_dump()
La función var_dump() en PHP muestra información estructurada sobre una variable o expresión, incluyendo su tipo y valor.
Introducción
var_dump() es una función de depuración integrada en PHP que imprime información estructurada sobre una o más variables — incluyendo el tipo, longitud y contenido de cada valor — directamente en la salida. A diferencia de echo, que solo imprime un valor, var_dump() te muestra exactamente qué tipo de valor estás observando, lo que la convierte en la forma más rápida de responder "¿por qué no funciona esto?" durante el desarrollo.
Esta página cubre la sintaxis, cómo se representa cada tipo de PHP, el trabajo con arrays y objetos, las diferencias con funciones relacionadas como print_r() y var_export(), y los errores comunes que debes tener en cuenta.
Sintaxis
var_dump(mixed $value, mixed ...$values): void$value— la variable o expresión a inspeccionar....$values— cualquier número de valores adicionales; cada uno se vuelca en orden.- Valor de retorno: ninguno (
void).var_dump()escribe directamente en la salida y no devuelve nada que puedas asignar.
Ejemplo básico
Aquí $var1 es un entero, $var2 una cadena y $array un array. La salida informa el tipo y valor de cada uno:
int(10)
string(13) "Hello, world!"
array(3) {
[0]=>
string(5) "apple"
[1]=>
string(6) "banana"
[2]=>
string(6) "cherry"
}Lee la salida con atención — hay más detalle del que echo te daría:
int(10)— el valor es el entero10.string(13) "Hello, world!"— una cadena de 13 bytes de longitud. Ver la longitud es útil para detectar espacios en blanco ocultos o problemas de codificación.- Para el array, cada línea
[clave]=>muestra la clave, luego el tipo y el valor del elemento debajo de ella.
Cómo se representa cada tipo
var_dump() formatea cada tipo escalar de manera diferente, lo que la hace más informativa que simplemente imprimir un valor. La tabla resume la notación:
| Tipo PHP | Ejemplo de salida |
|---|---|
| integer | int(42) |
| float | float(3.14) |
| string | string(5) "hello" |
| boolean | bool(true) |
| null | NULL |
| array | array(2) { ... } |
| object | object(ClassName)#1 (2) { ... } |
Los casos de boolean y NULL son los que los desarrolladores más utilizan. echo true imprime 1 y echo false / echo null no imprime nada, por lo que es imposible distinguir false, null y "" con echo — pero var_dump() los muestra claramente:
<?php
var_dump(true);
var_dump(false);
var_dump(null);
var_dump("");
var_dump(0);
var_dump("0");
?>bool(true)
bool(false)
NULL
string(0) ""
int(0)
string(1) "0"Observa cómo var_dump() distingue el entero 0 de la cadena "0" — una distinción que silenciosamente provoca errores en comparaciones débiles. Consulta Tipos de datos en PHP y gettype() para más información sobre la verificación de tipos.
Volcado de objetos y estructuras anidadas
var_dump() recursa en objetos y arrays anidados, mostrando la visibilidad (public / protected / private) de cada propiedad:
<?php
class User {
public string $name = "Ada";
protected int $age = 36;
private array $roles = ["admin", "editor"];
}
var_dump(new User());
?>object(User)#1 (3) {
["name"]=>
string(3) "Ada"
["age":protected]=>
int(36)
["roles":"User":private]=>
array(2) {
[0]=>
string(5) "admin"
[1]=>
string(6) "editor"
}
}El #1 es el id de instancia interna del objeto, y (3) es el número de propiedades.
Volcado de múltiples valores a la vez
Dado que var_dump() es variádica, puedes inspeccionar varias variables en una sola llamada en lugar de escribir una línea por variable:
<?php
$id = 7;
$name = "Grace";
$active = true;
var_dump($id, $name, $active);
?>int(7)
string(5) "Grace"
bool(true)var_dump() vs. print_r() vs. var_export()
Estas tres funciones se superponen, por lo que elegir la correcta es importante:
| Función | ¿Muestra tipos? | ¿La salida es PHP válido? | Mejor para |
|---|---|---|---|
var_dump() | Sí | No | Depuración — mayor detalle |
print_r() | No | No | Una vista legible y amigable para el usuario |
var_export() | No | Sí | Generación de código / volcados de configuración |
Usa var_dump() cuando necesites ver tipos y longitudes exactas. Recurre a print_r() cuando solo quieras una vista rápida y menos ruidosa de la estructura de un array, y a var_export() cuando quieras una salida que puedas pegar de vuelta en el código fuente.
Capturar la salida como cadena
var_dump() no devuelve nada, por lo que no puedes hacer $x = var_dump($y). Para capturar su salida (por ejemplo, para registrarla), envuélvela en búfer de salida:
<?php
$data = ["status" => 200, "ok" => true];
ob_start();
var_dump($data);
$dump = ob_get_clean();
// $dump now holds the var_dump output as a string
echo strlen($dump) . " characters captured\n";
?>Notas y errores comunes
- Destino de la salida.
var_dump()escribe en la salida estándar. Al ejecutarse en un navegador, PHP moderno envuelve el volcado en etiquetas<pre>para que la estructura sea legible; en la CLI imprime texto plano. - Los volcados olvidados llegan a producción. Un
var_dump()perdido en el código filtrará datos internos a los usuarios. Elimina los volcados de depuración antes de desplegar, o protégelos con un indicador de depuración. - Las cadenas muestran la longitud en bytes, no el número de caracteres.
string(13)cuenta bytes; una cadena multibyte (UTF-8) puede reportar un número mayor que el conteo de caracteres visibles. - Usa Xdebug para una salida más agradable. Con la extensión Xdebug instalada,
var_dump()se sobreescribe automáticamente para producir una salida con colores y profundidad limitada que es mucho más fácil de leer.
Conclusión
var_dump() es la función de referencia para inspeccionar qué es realmente un valor durante el desarrollo en PHP. Revela tipo, longitud, estructura y visibilidad en una sola llamada — un detalle que echo o print simples ocultan. Recurre a print_r() cuando quieras una lectura más limpia de un array y a var_export() cuando necesites código PHP reutilizable, pero para obtener información de depuración en bruto, var_dump() es difícil de superar.