php var_dump () vs print_r ()

297

Qual é a diferença entre var_dump()e print_r()em termos de cuspir uma matriz como string?

em um
fonte

Respostas:

355

A var_dumpfunção exibe informações estruturadas sobre variáveis ​​/ expressões, incluindo seu tipo e valor . As matrizes são exploradas recursivamente com valores recuados para mostrar a estrutura. Também mostra quais valores da matriz e propriedades do objeto são referências.

Ele print_r()exibe informações sobre uma variável de maneira legível por seres humanos. os valores da matriz serão apresentados em um formato que mostra chaves e elementos . Notação semelhante é usada para objetos.

Exemplo:

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

var_dump($obj) será exibido abaixo da saída na tela.

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

E, print_r($obj)será exibido abaixo da saída na tela.

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

Mais informações

Sarfraz
fonte
76
print_r (null) irá retornar nada onde como var_dump (null) retorna NULL que é útil quando depuração
rosh3000
7
Você pode estender sua resposta com 'var_export'?
joryl
1
Duas vantagens de var_dump () é que as informações despejadas são automaticamente incluídas em um elemento pre. Ao usar var_dump (), você pode ver que cada tipo tem sua própria cor. Melhorando a legibilidade.
Julian
3
@Julian somente se xdebug está instalado
Leif Neland
57

Geralmente, a print_r( )saída é mais agradável, mais concisa e fácil de ler, também conhecida como legível por humanos, mas não pode mostrar tipos de dados.

Com print_r()você também pode armazenar a saída em uma variável:

$output = print_r($array, true);

o que var_dump()não pode fazer. No entanto, var_dump()pode mostrar tipos de dados.

Gilzero
fonte
9
var_dump () pode ser armazenado em uma variável, embora seja um pouco mais feia: stackoverflow.com/questions/139474/…
SgtPooki
7
você também pode-lo de 'irmão' var_export () se precisar salvar
CSᵠ
21

var_dump() mostrará o tipo da coisa e o conteúdo dela.

Então você terá => (string)"var" Exemplo está aqui.

print_r() apenas produzirá o conteúdo.

Saída => "var" Exemplo está aqui.

David Yell
fonte
12
Eu acho que o exemplo melhor seria var_dump(0.0);que saídas float(0)vs print_r(0.0);que saídas 0(daí levando a possível tipo de confusão) ...
ircmaxell
13

Se você está perguntando quando deve usar o quê, geralmente uso print_r()para exibir valores e var_dump()quando tiver problemas com tipos de variáveis.

Danny Nimmo
fonte
8

var_dumpexibe informações estruturadas sobre o objeto / variável. Isso inclui tipo e valores. print_rMatrizes semelhantes são recorrentes e recuadas.

print_rexibe informações legíveis por humanos sobre os valores com um formato que apresenta chaves e elementos para matrizes e objetos.

O mais importante a ser observado é var_dumpo tipo de saída, bem como os valores, enquanto print_risso não ocorre.

Josh K
fonte
5

Diferenças significativas entre var_dumpeprint_r

ambas as funções despejam informações sobre a variável , mas var_dumpvários parâmetros que serão despejados, onde print_rdois parâmetros podem ser extraídos, dos quais o primeiro parâmetro é a variável que você deseja despejar e o segundo é um valor booleano.

var_dumpnão pode retornar nenhum valor, apenas pode despejar / imprimir os valores em que, como print_r, pode retornar as informações da variável se definirmos o segundo parâmetro print_rcomo true . O valor retornado de print_restará no formato de sequência .

As informações impressas por print_rsão muito mais em formato legível, onde são var_dumpimpressos os valores brutos.

print_rA função pode ser usada em muitos contextos, onde também var_dumppode ser usada para fins de depuração, principalmente porque não pode retornar valor.

Akshay Khale
fonte
1
vardumpleva um ou mais argumentos e cada um será descartado.
bispo
@bishop, sim você está correto pode levar mais argumentos, mas não retorna qualquer valor
Akshay Khale
então conserte sua resposta?
Govind Rai 21/09
É corrigido @GovindRai
Akshay Khale 22/16
"var_dump não pode retornar nenhum valor"? Sim pode. Meio. ob_start(); var_dump($var); $dump=ob_get_clean();
Sinus Mackowaty 27/09/19
3

Eu recomendaria, adicionalmente, colocar a saída de var_dump () ou printr em uma tag pré ao enviar para um navegador.

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

Dará um resultado mais legível.

Christian Nagel
fonte
2

var_dump($var) mostra detalhes detalhados, fornecendo detalhes adicionais de

  • tipo de dados do valor (incluindo os elementos descendentes)
  • número de elementos em uma variável
  • comprimento do valor
ɥʇɹɐʞıɥʇɹɐʞ ouɐɯ
fonte
1

Com matrizes grandes, print_r pode mostrar muito mais informações do que as úteis. Você pode truncá-lo assim, mostrando os primeiros 2.000 caracteres ou quantos você precisar.

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

var_dump (): -

  1. Esta função exibe informações estruturadas sobre uma ou mais expressões que incluem seu tipo e valor. Matrizes e objetos são explorados recursivamente com valores recuados para mostrar a estrutura.
  2. Esta função exibe o número do elemento em uma variável.
  3. Esta função exibe o comprimento da variável.
  4. Não é possível retornar o valor, apenas imprimi-lo.
  5. é usado para fins de depuração.

Exemplo: -

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

resultado :-

   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 informações legíveis por humanos sobre uma variável.
  2. Não exibe o número do elemento em uma variável como var_dump ().
  3. Não exibe o comprimento da variável em uma variável como var_dump ().
  4. Retorne o valor se definirmos o segundo parâmetro como true em printf_r ().

Exemplo: -

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

Resultado:-

<pre>
Array
(
    [a] => apple
    [b] => banana
    [c] => Array
        (
            [0] => x
            [1] => y
            [2] => z
        )
)
</pre>
HeadAndTail
fonte
"Não é possível retornar o valor, apenas imprima o valor." Sim pode. Meio. ob_start(); var_dump($var); $dump=ob_get_clean();
Sinus Mackowaty
0

print_r () e var_dump () são funções de depuração de matriz usadas no PHP para fins de depuração. A função print_r () retorna as chaves da matriz e seus membros como Matriz ([chave] = valor), enquanto a função var_dump () retorna a lista de matrizes com suas chaves de matriz com tipo e comprimento de dados, bem como, por exemplo, Matriz (comprimento da matriz) {[0] = string (1) 'a'}.

Mahesh Chaudhary
fonte
0

Podemos passar vários parâmetros com var_dump como:

var_dump("array1",$array1,"array2",$array2);
Jasbir Rana
fonte