Qual é a diferença entre var_dump
, var_export
e print_r
?
Qual é a diferença entre var_dump
, var_export
e print_r
?
Respostas:
var_dump é para fins de depuração. var_dump
sempre imprime o resultado.
// var_dump(array('', false, 42, array('42')));
array(4) {
[0]=> string(0) ""
[1]=> bool(false)
[2]=> int(42)
[3]=> array(1) {[0]=>string(2) "42")}
}
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â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_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âmetroopcional
array (
0 => '',
1 => false,
2 => 42,
3 => array (0 => '42',),
)
Pessoalmente, acho que var_export
é o melhor compromisso conciso e preciso.
var_export
, devido à sua natureza, sofrerá uma terrível morte recursiva em, bem, matrizes recursivas. print_r
e 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). :)
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 optar var_export
por var_dump
esse caso de uso é aceitável para mim. Para completar, observe esta solicitação de recurso relacionada .
var_dump
e var_export
relacionar assim (do manual )
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_r
que var_dump
exporta mais informações, como o tipo de dados e o tamanho dos elementos.