Menu

PHP var_dump() ou print_r(): imprimir arrays e depurar

print_r($array) imprime um array de forma legível, var_dump($value) também mostra cada tipo e tamanho, e var_export imprime código PHP válido. Veja quando usar cada um, como obter o print_r como string e como formatar a saída no HTML com <pre>.

Esta página tem editores executáveis - edite, execute e veja a saída na hora.

print_r($array) imprime um array ou objeto com as chaves e os valores numa forma legível. var_dump($value) imprime a mesma estrutura mais o tipo e o tamanho de cada valor. Use print_r para ver o que há num array, e var_dump quando precisar saber se um valor é "1" ou 1.

Compare as duas saídas para admin: o print_r não imprimiu nada depois da seta, o var_dump imprimiu bool(false). Essa diferença é o principal motivo para usar o var_dump ao depurar.

print_r, var_dump ou var_export

As três funções mostram os mesmos dados com níveis diferentes de detalhe:

print_rvar_dumpvar_export
Mostra os tiposnãosimcomo literais PHP
false, null, ""não imprimem nadabool(false), NULL, string(0) ""false, NULL, ''
Pode retornar uma stringprint_r($x, true)nãovar_export($x, true)
A saída é PHP válidonãonãosim
Vários valores numa chamadanãovar_dump($a, $b)não

O print_r é o mais fácil de ler, o var_dump o mais preciso, e o var_export dá um código que você pode colar de volta num arquivo.

Obter a saída do print_r como string

Passe true como segundo argumento e o print_r retorna o texto em vez de imprimi-lo. É assim que você escreve um array num arquivo de log ou o coloca dentro de uma mensagem maior.

var_export($value, true) retorna uma string do mesmo jeito. O var_dump sempre imprime, então para capturá-lo você precisa de output buffering: ob_start(); var_dump($x); $text = ob_get_clean();.

Formatar um array no HTML com pre

Num navegador, as quebras de linha e os espaços do print_r se juntam numa única linha longa, porque o HTML ignora espaços em branco. Envolva a saída em <pre> para manter o layout. Rode e olhe a aba Page.

O htmlspecialchars importa assim que os dados possam conter < ou &, por exemplo entradas do usuário: sem ele, o navegador trataria esse texto como HTML. Para dados que você envia ao JavaScript ou a uma API, a forma com json_encode costuma ser a mais útil.

Mostrar vários valores de uma vez

O var_dump aceita qualquer quantidade de argumentos e imprime um de cada vez, o que é rápido para comparar dois valores lado a lado.

A saída mostra por que == diz que são iguais e === não: um é string(2) "42", o outro int(42).

Imprimir objetos

As três funções também imprimem objetos. O var_dump e o print_r marcam as propriedades privadas e protegidas ([label:Point:private]), o que ajuda quando uma propriedade parece estar faltando.

O #1 na saída do var_dump é o id do objeto. Duas variáveis que mostram o mesmo id apontam para o mesmo objeto.

Erro comum: echo num array

O echo transforma o argumento em string. Um array não tem forma de string, então o PHP imprime a palavra Array e gera um aviso:

<?php
$colors = ["red", "green", "blue"];
echo $colors;

O PHP imprime:

Warning: Array to string conversion in /home/index.php on line 3
Array

Imprima o conteúdo com uma das funções acima, ou junte os valores você mesmo:

O implode serve para mostrar uma lista a um usuário, o json_encode para logs e APIs, e o print_r ou o var_dump para a sua própria depuração.

Perguntas frequentes

Qual a diferença entre var_dump e print_r?

O print_r mostra chaves e valores numa forma curta e legível. O var_dump também mostra o tipo e o tamanho de cada valor, como string(3) "Ada" e bool(false), então é o que se usa quando o tipo importa. print_r(false) não imprime nada, enquanto var_dump(false) imprime bool(false).

Como obtenho a saída do print_r como string?

Passe true como segundo argumento: $text = print_r($array, true); retorna o texto em vez de imprimi-lo, para você escrevê-lo num log com error_log($text) ou guardá-lo numa variável. var_export($value, true) funciona do mesmo jeito; o var_dump não tem essa opção.

Como imprimo um array de forma bonita no navegador?

Envolva a saída numa tag <pre> para o navegador manter as quebras de linha e a indentação: echo '<pre>' . print_r($array, true) . '</pre>';. Escape com htmlspecialchars se os dados puderem conter HTML.

Por que o echo num array imprime Array?

O echo converte o argumento em string, e um array vira a palavra Array com o aviso "Array to string conversion". Use print_r, var_dump, implode(', ', $arr) ou json_encode($arr) para imprimir o conteúdo.

O que faz o var_export no PHP?

Ele imprime um valor como código PHP válido, por exemplo array ( 0 => 'a', ), que você pode colar de volta num script. Com true como segundo argumento, ele retorna o código como string, que é como algumas ferramentas escrevem arquivos de configuração em cache.

Ilustração das linguagens de programação do Coddy

Aprenda a programar com o Coddy

COMEÇAR