W3docs

var_dump()

A função var_dump() exibe informações estruturadas sobre uma variável em PHP, incluindo seu tipo e valor. Saiba como usá-la.

Introdução

var_dump() é uma função de depuração embutida do PHP que exibe informações estruturadas sobre uma ou mais variáveis — incluindo o tipo, comprimento e conteúdo de cada valor — diretamente na saída. Diferente do echo, que apenas imprime um valor, var_dump() mostra exatamente que tipo de valor você está analisando, tornando-a a forma mais rápida de responder "por que isso não está funcionando?" durante o desenvolvimento.

Esta página aborda a sintaxe, como cada tipo PHP é renderizado, como trabalhar com arrays e objetos, como ela difere de funções relacionadas como print_r() e var_export(), e os problemas a observar.

Sintaxe

var_dump(mixed $value, mixed ...$values): void
  • $value — a variável ou expressão a inspecionar.
  • ...$values — qualquer número de valores adicionais; cada um é exibido na ordem.
  • Valor de retorno: nenhum (void). var_dump() escreve diretamente na saída e não retorna nada para atribuir.

Exemplo básico

php— editable, runs on the server

Aqui $var1 é um inteiro, $var2 uma string e $array um array. A saída exibe o tipo e o valor de cada um:

int(10)
string(13) "Hello, world!"
array(3) {
  [0]=>
  string(5) "apple"
  [1]=>
  string(6) "banana"
  [2]=>
  string(6) "cherry"
}

Leia a saída com atenção — há mais detalhes do que echo forneceria:

  • int(10) — o valor é o inteiro 10.
  • string(13) "Hello, world!" — uma string com 13 bytes de comprimento. Ver o comprimento é útil para identificar espaços ocultos ou problemas de codificação.
  • Para o array, cada linha [key]=> mostra a chave e, em seguida, o tipo e o valor do elemento abaixo dela.

Como cada tipo é renderizado

var_dump() formata cada tipo escalar de forma diferente, o que a torna mais informativa do que simplesmente imprimir um valor. A tabela resume a notação:

Tipo PHPExemplo de saída
integerint(42)
floatfloat(3.14)
stringstring(5) "hello"
booleanbool(true)
nullNULL
arrayarray(2) { ... }
objectobject(ClassName)#1 (2) { ... }

Os casos boolean e NULL são os mais úteis para desenvolvedores. echo true imprime 1 e echo false / echo null não imprimem nada, tornando impossível distinguir false, null e "" com echo — mas var_dump() os mostra 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"

Observe como var_dump() distingue o inteiro 0 da string "0" — uma distinção que silenciosamente causa bugs em comparações sem tipo estrito. Veja PHP Data Types e gettype() para mais informações sobre verificação de tipos.

Inspecionando objetos e estruturas aninhadas

var_dump() percorre objetos e arrays aninhados recursivamente, exibindo a visibilidade (public / protected / private) de cada propriedade:

<?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"
  }
}

O #1 é o id interno da instância do objeto e (3) é o número de propriedades.

Inspecionando múltiplos valores de uma vez

Como var_dump() é variádica, você pode inspecionar várias variáveis em uma única chamada em vez de escrever uma linha por variável:

<?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()

Essas três funções se sobrepõem, por isso escolher a certa é importante:

FunçãoExibe tipos?Saída é PHP válido?Melhor para
var_dump()SimNãoDepuração — máximo de detalhes
print_r()NãoNãoUma visão legível e amigável
var_export()NãoSimGeração de código / dumps de configuração

Use var_dump() quando precisar ver tipos e comprimentos exatos. Recorra a print_r() quando quiser uma visualização rápida e menos detalhada da estrutura de um array, e a var_export() quando quiser uma saída que possa ser colada de volta no código-fonte.

Capturando a saída como string

var_dump() não retorna nada, portanto não é possível fazer $x = var_dump($y). Para capturar sua saída (para fins de log, por exemplo), envolva-a em buffer de saída:

<?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 e pontos de atenção

  • Destino da saída. var_dump() escreve na saída padrão. Ao executar em um navegador, o PHP moderno envolve o dump em tags <pre> para que a estrutura seja legível; na CLI, imprime texto simples.
  • Dumps esquecidos chegam à produção. Um var_dump() perdido no código irá vazar dados internos para os usuários. Remova os dumps de depuração antes de implantar ou proteja-os por trás de uma flag de debug.
  • Strings exibem comprimento em bytes, não em caracteres. string(13) conta bytes; uma string multibyte (UTF-8) pode reportar um número maior do que a contagem de caracteres visíveis.
  • Use Xdebug para uma saída mais legível. Com a extensão Xdebug instalada, var_dump() é automaticamente substituída para produzir uma saída com cores e profundidade limitada, muito mais fácil de analisar.

Conclusão

var_dump() é a função ideal para inspecionar o que um valor realmente é durante o desenvolvimento em PHP. Ela revela tipo, comprimento, estrutura e visibilidade em uma única chamada — detalhes que echo ou print simples escondem. Recorra a print_r() quando quiser uma leitura mais limpa de um array e a var_export() quando precisar de código PHP reutilizável, mas para depuração bruta var_dump() é difícil de superar.

Prática

Prática
Qual é o objetivo da função var_dump() em PHP?
Qual é o objetivo da função var_dump() em PHP?
Was this page helpful?