Às vezes, é mais fácil pedir a alguém para entender melhor do que ler manuais.
Deepak Lamichhane 6/12/12
11
@ Suas respostas do senso comum são geralmente mais claras, concisas, acionáveis e basicamente sempre mais fáceis de fazer referência do que o manual do PHP.
Mark Fox
Respostas:
194
var_dump é para fins de depuração. var_dumpsempre imprime o resultado.
print_r também é para fins de depuração, mas não inclui o tipo de membro. É uma boa ideia usar se você conhece os tipos de elementos em sua matriz, mas pode ser enganador. print_rpor padrão, imprime o resultado, mas permite retornar como sequência usando o$returnparâmetroopcional
Array([0]=>[1]=>[2]=>42[3]=>Array([0]=>42))
var_export imprime código php válido. Útil se você calculou alguns valores e deseja os resultados como constantes em outro script. Note-se quevar_exportnão pode lidar com ciclos de referência / matrizes recursivos, enquantovar_dumpeprint_rvá para estes. var_exportpor padrão, imprime o resultado, mas permite retornar como sequência usando o$returnparâmetroopcional
Observe que var_export, devido à sua natureza, sofrerá uma terrível morte recursiva em, bem, matrizes recursivas. print_re var_dump(embora não tenha muita certeza sobre o último, já que geralmente não o uso) não tem esse problema. Então não var_export($_GLOBALS);, por exemplo (que se contém). :)
pinkgothic
@ftrotter Eu sempre achei que o comentário explicaria bem essa curiosidade, mas lá vai você, acrescentou uma breve nota à resposta.
Phihag #
1
Deve-se acrescentar que você pode fazer com que print_r () e var_export () retornem uma string em vez de produzi-la, enquanto var_dump () não pode fazê-lo. Além disso, não gosto de var_export (), pois é confuso - se você tentar exportar alguma constante indefinida SOMECONST, receberá apenas uma string de texto 'SOMECONST'. Portanto, ele não diz NULL, 0, "", mas presume que seja uma string (e suponho que você também lance um AVISO).
userfuser
1
var_export é bom para representar com segurança uma string, como proteção de citação / barra invertida.
Dkellner
1
Pessoalmente, eu prefiro a var_dumpsaída. Pena que não permite retornar a saída como uma string. Como tal, posso me relacionar com o sentimento de @ iconoclast no comentário acima. Mas ter que optar var_exportpor var_dumpesse caso de uso é aceitável para mim. Para completar, observe esta solicitação de recurso relacionada .
var_export () obtém informações estruturadas sobre a variável especificada. É semelhante ao var_dump () com uma exceção: a representação retornada é um código PHP válido.
Eles diferem do print_rque var_dumpexporta mais informações, como o tipo de dados e o tamanho dos elementos.
Respostas:
var_dump é para fins de depuração.
var_dump
sempre imprime o resultado.print_r também é para fins de depuração, mas não inclui o tipo de membro. É uma boa ideia usar se você conhece os tipos de elementos em sua matriz, mas pode ser enganador.
print_r
por padrão, imprime o resultado, mas permite retornar como sequência usando o$return
parâmetroopcionalvar_export imprime código php válido. Útil se você calculou alguns valores e deseja os resultados como constantes em outro script. Note-se que
var_export
não pode lidar com ciclos de referência / matrizes recursivos, enquantovar_dump
eprint_r
vá para estes.var_export
por padrão, imprime o resultado, mas permite retornar como sequência usando o$return
parâmetroopcionalPessoalmente, acho que
var_export
é o melhor compromisso conciso e preciso.fonte
var_export
, devido à sua natureza, sofrerá uma terrível morte recursiva em, bem, matrizes recursivas.print_r
evar_dump
(embora não tenha muita certeza sobre o último, já que geralmente não o uso) não tem esse problema. Então nãovar_export($_GLOBALS);
, por exemplo (que se contém). :)var_dump
saída. Pena que não permite retornar a saída como uma string. Como tal, posso me relacionar com o sentimento de @ iconoclast no comentário acima. Mas ter que optarvar_export
porvar_dump
esse caso de uso é aceitável para mim. Para completar, observe esta solicitação de recurso relacionada .var_dump
evar_export
relacionar assim (do manual )Eles diferem do
print_r
quevar_dump
exporta mais informações, como o tipo de dados e o tamanho dos elementos.fonte