A veces es más fácil pedirle a otra persona que comprenda mejor que leer manuales.
Deepak Lamichhane
11
@Sus respuestas de Common Sense SO a menudo son más claras, más concisas, accionables y, básicamente, siempre son más fáciles de consultar que el manual de PHP.
Mark Fox
Respuestas:
194
var_dump es para propósitos de depuración. var_dumpsiempre imprime el resultado.
print_r también tiene fines de depuración, pero no incluye el tipo de miembro. Es una buena idea usarlo si conoce los tipos de elementos en su matriz, pero de lo contrario puede ser engañoso. print_rde forma predeterminada imprime el resultado, pero permite volver como una cadena en su lugar mediante el uso del$returnparámetroopcional.
Array([0]=>[1]=>[2]=>42[3]=>Array([0]=>42))
var_export imprime un código php válido. Útil si calculó algunos valores y desea que los resultados sean una constante en otro script. Tenga en cuenta quevar_exportno puede manejar ciclos de referencia / matrices recursivas, mientras quevar_dumpyprint_rverifique estos. var_exportde forma predeterminada imprime el resultado, pero permite volver como una cadena en su lugar mediante el uso del$returnparámetroopcional.
Tenga en cuenta que var_export, debido a su naturaleza, morirá una muerte recursiva horrible en, bueno, matrices recursivas. print_ry var_dump(aunque no estoy completamente seguro de esto último, ya que generalmente no lo uso) no tengo ese problema. Así que no var_export($_GLOBALS);, por ejemplo (que se contiene a sí mismo). :)
pinkgothic
@ftrotter Siempre pensé que el comentario explicaría bien esa curiosidad, pero ahí tienes, agregué una breve nota a la respuesta.
phihag
1
Debe agregarse que puede hacer que print_r () y var_export () devuelvan una cadena en lugar de generarla, mientras que var_dump () no puede hacerlo. Además, no me gusta var_export () ya que es confuso: si intenta exportar alguna SOMECONST constante indefinida, simplemente obtendrá una cadena de texto 'SOMECONST'. Por lo tanto, no dirá NULL, 0, "", pero en realidad supondrá que es una cadena (y supongo que también arrojará un AVISO).
usuariofusor
1
var_export es bueno para representar de forma segura una cadena, como la protección de comillas / barra invertida.
dkellner
1
Personalmente prefiero la var_dumpsalida. Lástima que no permite devolver la salida como una cadena. Como tal, puedo relacionarme con el sentimiento de @ iconoclast en el comentario anterior. Pero tener que elegir var_exportmás var_dumppara este caso de uso es aceptable para mí. Para completar, tenga en cuenta esta solicitud de función relacionada .
Paul van Leeuwen
3
var_dumpy var_exportrelacionarse así (del manual )
var_export () obtiene información estructurada sobre la variable dada. Es similar a var_dump () con una excepción: la representación devuelta es un código PHP válido.
Difieren de print_r que var_dumpexporta más información, como el tipo de datos y el tamaño de los elementos.
Respuestas:
var_dump es para propósitos de depuración.
var_dump
siempre imprime el resultado.print_r también tiene fines de depuración, pero no incluye el tipo de miembro. Es una buena idea usarlo si conoce los tipos de elementos en su matriz, pero de lo contrario puede ser engañoso.
print_r
de forma predeterminada imprime el resultado, pero permite volver como una cadena en su lugar mediante el uso del$return
parámetroopcional.var_export imprime un código php válido. Útil si calculó algunos valores y desea que los resultados sean una constante en otro script. Tenga en cuenta que
var_export
no puede manejar ciclos de referencia / matrices recursivas, mientras quevar_dump
yprint_r
verifique estos.var_export
de forma predeterminada imprime el resultado, pero permite volver como una cadena en su lugar mediante el uso del$return
parámetroopcional.Personalmente, creo que
var_export
es el mejor compromiso de conciso y preciso.fuente
var_export
, debido a su naturaleza, morirá una muerte recursiva horrible en, bueno, matrices recursivas.print_r
yvar_dump
(aunque no estoy completamente seguro de esto último, ya que generalmente no lo uso) no tengo ese problema. Así que novar_export($_GLOBALS);
, por ejemplo (que se contiene a sí mismo). :)var_dump
salida. Lástima que no permite devolver la salida como una cadena. Como tal, puedo relacionarme con el sentimiento de @ iconoclast en el comentario anterior. Pero tener que elegirvar_export
másvar_dump
para este caso de uso es aceptable para mí. Para completar, tenga en cuenta esta solicitud de función relacionada .var_dump
yvar_export
relacionarse así (del manual )Difieren de
print_r
quevar_dump
exporta más información, como el tipo de datos y el tamaño de los elementos.fuente