2011-02-18 18 views
108

¿Cuál es la diferencia entre var_dump, var_export y print_r?Diferencia entre var_dump, var_export e print_r

+13

A veces es más fácil pedir a alguien más para entender mejor a continuación, leer manuales. –

+7

@ Your Common Sense S.O. las respuestas son a menudo más claras, más concisas, procesables y, básicamente, siempre más fáciles de referencia que el manual de PHP. –

Respuesta

165

var_dump es para propósitos de depuración. var_dump siempre imprime el 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 es para propósitos de depuración, también, pero no incluye el tipo del miembro. Es una buena idea utilizarla si conoce los tipos de elementos en su matriz, pero puede ser engañosa de lo contrario. print_r de forma predeterminada imprime el resultado, pero permite devolverlo como una cadena utilizando el parámetro $return opcional.

Array (
    [0] => 
    [1] => 
    [2] => 42 
    [3] => Array ([0] => 42) 
) 

var_export impresiones válida de PHP. Útil si calculó algunos valores y quiere los resultados como una constante en otro script. Tenga en cuenta que var_export no puede manejar ciclos de referencia/matrices recursivas, mientras que var_dump y print_r cheque por éstos. var_export de forma predeterminada imprime el resultado, pero permite devolverlo como una cadena utilizando el parámetro $return opcional.

array (
    0 => '', 
    2 => false, 
    2 => 42, 
    3 => array (0 => '42',), 
) 

personalmente, creo que var_export es el mejor compromiso de concisa y precisa.

+45

Tenga en cuenta que 'var_export', debido a su naturaleza, morirá una muerte recursiva horrible en, bueno, arreglos recursivos. 'print_r' y' var_dump' (aunque no estoy seguro de esto último, ya que generalmente no lo uso) no tienen ese problema. Así que no 'var_export ($ _ GLOBALS);', por ejemplo (que se contiene a sí mismo). :) – pinkgothic

+6

este comentario es importante leer, y realmente debe ser añadido a la respuesta – ftrotter

+0

@ftrotter Siempre pensé que el comentario explicaría también que la curiosidad, pero hay que ir, añadido una breve nota para la respuesta. – phihag

2

var_dump y var_export refieren como esto (de la manual)

var_export() obtiene estructurado información sobre la variable dada. Es similar a var_dump() con una excepción: la representación regresado es válida de PHP.

Se diferencian de print_r que var_dump exporta más información, como el tipo de datos y el tamaño de los elementos.

Cuestiones relacionadas