print_r no es exactamente un alias de var_dump: se genera en un formato diferente. En particular, la salida de var_dump también incluye el "tipo" de cada variable.
Otro detalle para agregar y que puede ser útil, es que var_dump trunca textos muy largos, mostrando ... e indicando la longitud restante, por ejemplo: incluso '... (longitud = 4482) Si usa echo esto no sucede.
Yordan
Respuestas:
186
printy echoson más o menos lo mismo; Ambos son construcciones de lenguaje que muestran cadenas. Las diferencias son sutiles: printtiene un valor de retorno de 1, por lo que puede usarse en expresiones, mientras que echotiene un voidtipo de retorno; echopuede tomar múltiples parámetros, aunque dicho uso es raro; echoes ligeramente más rápido queprint . (Personalmente, siempre uso echo, nunca print).
var_dumpimprime un volcado detallado de una variable, incluido su tipo y el tipo de cualquier subelemento (si se trata de una matriz o un objeto). print_rimprime una variable en una forma más legible para el ser humano: las cadenas no se citan, se omite la información de tipo, no se proporcionan los tamaños de matriz, etc.
var_dumpPor lo general, es más útil que print_rcuando se depura, en mi experiencia. Es particularmente útil cuando no sabe exactamente qué valores / tipos tiene en sus variables. Considere este programa de prueba:
@Shore: es algo integrado en el lenguaje que no es una función. Generalmente son muy rápidos y no funcionan exactamente como las funciones normales.
alex
3
Editado dos años después para corregir las imprecisiones identificadas en estos comentarios. Gracias a todos, debo haber estado durmiendo el 7 de junio de 2010. ;-)
Devoluciones 1 , por lo que se puede usar en una expresión
p.ej print "Hello"
o, if ($expr && print "foo")
print_r ()
Salidas de una representación legible de cualquier uno valor
Acepta no solo cadenas, sino otros tipos, incluidas matrices y objetos, formateándolos para que sean legibles
Útil al depurar
Puede devolver su salida como un valor de retorno (en lugar de hacer eco) si se da el segundo argumento opcional
var_dump ()
Produce una representación legible por humanos de uno o más valores separados por comas
Acepta no solo cadenas, sino otros tipos, incluidas matrices y objetos, formateándolos para que sean legibles
Utiliza un formato de salida diferente para print_r(), por ejemplo, también imprime el tipo de valores
Útil al depurar
Sin valor de retorno
var_export ()
Da salida a una legible y PHP ejecutable representación de cualquier uno valor
Acepta no solo cadenas, sino otros tipos, incluidas matrices y objetos, formateándolos para que sean legibles
Utiliza un formato de salida diferente para ambos print_r()yvar_dump() , ¡la salida resultante es un código PHP válido!
Útil al depurar
Puede devolver su salida como un valor de retorno (en lugar de hacer eco) si se da el segundo argumento opcional
Notas:
Aunque printpuede usarse en una expresión, recomiendo que las personas eviten hacerlo, porque es malo para la legibilidad del código (y porque es poco probable que alguna vez sea útil). Las reglas de precedencia cuando interactúa con otros operadores también pueden ser confusas. Debido a esto, personalmente nunca tengo una razón para usarlo echo.
Mientras que echoy printson construcciones del lenguaje, print_r()y var_dump()/ var_export()son funciones regulares. No necesita paréntesis para encerrar los argumentos echooprint (y si los usa, se tratarán como lo harían en una expresión).
Si bien var_export()devuelve un código PHP válido que permite leer los valores más tarde, confiar en esto para el código de producción puede facilitar la introducción de vulnerabilidades de seguridad debido a la necesidad de usar eval(). Sería mejor usar un formato como JSON en su lugar para almacenar y volver a leer los valores. La velocidad será comparable.
Solo una nota rápida sobre cuándo desearía la echo $a, $b;sintaxis cuando puede hacerlo echo $a . $b;: si $ ao $ b son cadenas realmente grandes, entonces este último usará memoria y tiempo adicionales para crear una versión concatenada separada de las cadenas en la memoria anterior. puede comenzar a dar salida al navegador.
thomasrutter
Por supuesto, también podrías usarlo echo $a; echo $b;.
thomasrutter
16
Solo para agregar a la respuesta de John , echodebería ser el único que use para imprimir contenido en la página.
printEs un poco más lento. var_dump()yprint_r() solo debe usarse para depurar.
También vale la pena mencionar que, print_r()y var_dump()por eco, por defecto, agregue un segundo argumento al print_r()menos que se evalúe como verdadero para que regrese, por ejemploprint_r($array, TRUE) .
La diferencia entre hacer eco y volver son:
echo: imprimirá inmediatamente el valor a la salida.
return: devolverá la salida de la función como una cadena. Útil para iniciar sesión, etc.
Solo porque planteaste el problema, ¿cuál es la diferencia entre echoing y returning?
David dice que reinstale a Monica el
2
wow, desearía saber sobre el parámetro de retorno :( básicamente puedes hacer $ foo = print_r ($ array, true); y usarlo de otras maneras (en un registro, tabla, etc.)
FryGuy
He usado mucho el print_rparámetro de retorno mientras codificaba PHP. Sin embargo, tendía a escribir print_r( $foo, 1 );. Es más rápido escribir;) Y sobre esto no me importa mucho la legibilidad ya que el nombre print_rtampoco me parece muy descriptivo.
exhuma
var_dump()no admite el segundo argumento, lo que le permite devolver un valor como print_r()sí, porque var_dump()puede aceptar múltiples argumentos para generar.
thomasrutter
@thomasrutter Es cierto, no estoy seguro de por qué escribí eso.
La diferencia entre echo , print , print_r y var_dump es muy simple.
eco
echo no es en realidad una función sino una construcción de lenguaje que se utiliza para imprimir la salida. Es marginalmente más rápido que la impresión.
echo "Hello World";// this will print Hello World
echo "Hello ","World";// Multiple arguments - this will print Hello World
$var_1=55;
echo "$var_1";// this will print 55
echo "var_1=".$var_1;// this will print var_1=55
echo 45+$var_1;// this will print 100
$var_2="PHP";
echo "$var_2";// this will print PHP
$var_3=array(99,98,97)// Arrays are not possible with echo (loop or index value required)
$var_4=array("P"=>"3","J"=>"4");// Arrays are not possible with echo (loop or index value required)
También puede usar la declaración echo con o sin paréntesis
echo ("Hello World");// this will print Hello World
impresión
Al igual que echo construct print, también es una construcción de lenguaje y no una función real. La diferencia entre echo e print es que print solo acepta un único argumento y print siempre devuelve 1. Mientras que echo no tiene valor de retorno. Entonces, la declaración de impresión se puede usar en expresiones.
print"Hello World";// this will print Hello Worldprint"Hello ","World";// Multiple arguments - NOT POSSIBLE with print
$var_1=55;print"$var_1";// this will print 55print"var_1=".$var_1;// this will print var_1=55print45+$var_1;// this will print 100
$var_2="PHP";print"$var_2";// this will print PHP
$var_3=array(99,98,97)// Arrays are not possible with print (loop or index value required)
$var_4=array("P"=>"3","J"=>"4");// Arrays are not possible with print (loop or index value required)
Al igual que echo , la impresión se puede usar con o sin paréntesis.
print("Hello World");// this will print Hello World
print_r
La función print_r () se usa para imprimir información legible por humanos sobre una variable. Si el argumento es una matriz, la función print_r () imprime sus claves y elementos (lo mismo para los objetos).
print_r ("Hello World");// this will print Hello World
$var_1=55;
print_r ("$var_1");// this will print 55
print_r ("var_1=".$var_1);// this will print var_1=55
print_r (45+$var_1);// this will print 100
$var_2="PHP";
print_r ("$var_2");// this will print PHP
$var_3=array(99,98,97)// this will print Array ( [0] => 1 [1] => 2 [2] => 3 )
$var_4=array("P"=>"3","J"=>"4");// this will print Array ( [P] => 3 [J] => 4 )
var_dump
La función var_dump generalmente se usa para depurar e imprime la información (tipo y valor) sobre una variable / matriz / objeto.
var_dump($var_1);// this will print int(5444)
var_dump($var_2);// this will print string(5) "Hello"
var_dump($var_3);// this will print array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
var_dump($var_4);// this will print array(2) { ["P"]=> string(1) "3" ["J"]=> string(1) "4" }
Hay tantos problemas con esta respuesta. Noprint es una función real, es una construcción de lenguaje como echo. También se puede usar como una declaración. no es una declaración ni se puede usar en una. no no requiere paréntesis, ni tampoco eco o impresión utilizan los paréntesis, como una función haría. También se perdió una de las principales diferencias: echo acepta múltiples cadenas para hacer eco separadas por comas. echoprint
thomasrutter
2
... y envió esta respuesta cuando ya existían varias respuestas y contenían la información correcta .
thomasrutter
2
** Echocan acepta múltiples expresiones mientras que print no puede. La función PHP Print_r () se usa para devolver una matriz en una forma legible para humanos. Simplemente se escribe como
print: es una construcción de lenguaje donde no es necesario usar paréntesis, solo toma un parámetro y devuelve
1 always.intprint(param1);print"test1";print"test1","test2";// It will give syntax error
prinf: es una función que toma al menos una cadena y estilo de formato y devuelve la longitud de la cadena de salida.
int printf($string,$s);
$s="Shailesh";
$i= printf("Hello %s how are you?",$s);
echo $i;Output:HelloShailesh how are you?27
echo returns void so its execution is faster than printand printf
print_r () puede imprimir el valor, pero también si se pasa el segundo parámetro de indicador y es VERDADERO: devolverá el resultado impreso como una cadena y nada se enviará a la salida estándar. Sobre var_dump. Si se instala el depurador XDebug, los resultados de salida se formatearán de una manera mucho más legible y comprensible.
Respuestas:
print
yecho
son más o menos lo mismo; Ambos son construcciones de lenguaje que muestran cadenas. Las diferencias son sutiles:print
tiene un valor de retorno de 1, por lo que puede usarse en expresiones, mientras queecho
tiene unvoid
tipo de retorno;echo
puede tomar múltiples parámetros, aunque dicho uso es raro;echo
es ligeramente más rápido queprint
. (Personalmente, siempre usoecho
, nuncaprint
).var_dump
imprime un volcado detallado de una variable, incluido su tipo y el tipo de cualquier subelemento (si se trata de una matriz o un objeto).print_r
imprime una variable en una forma más legible para el ser humano: las cadenas no se citan, se omite la información de tipo, no se proporcionan los tamaños de matriz, etc.var_dump
Por lo general, es más útil queprint_r
cuando se depura, en mi experiencia. Es particularmente útil cuando no sabe exactamente qué valores / tipos tiene en sus variables. Considere este programa de prueba:Con
print_r
usted no puede distinguir la diferencia entre0
y0.0
, ofalse
y''
:fuente
eco
Sin valor de retorno
p.ej
echo "String 1", "String 2"
impresión
Devoluciones
1
, por lo que se puede usar en una expresiónp.ej
print "Hello"
o,
if ($expr && print "foo")
print_r ()
var_dump ()
print_r()
, por ejemplo, también imprime el tipo de valoresvar_export ()
print_r()
yvar_dump()
, ¡la salida resultante es un código PHP válido!Notas:
print
puede usarse en una expresión, recomiendo que las personas eviten hacerlo, porque es malo para la legibilidad del código (y porque es poco probable que alguna vez sea útil). Las reglas de precedencia cuando interactúa con otros operadores también pueden ser confusas. Debido a esto, personalmente nunca tengo una razón para usarloecho
.echo
yprint
son construcciones del lenguaje,print_r()
yvar_dump()
/var_export()
son funciones regulares. No necesita paréntesis para encerrar los argumentosecho
oprint
(y si los usa, se tratarán como lo harían en una expresión).var_export()
devuelve un código PHP válido que permite leer los valores más tarde, confiar en esto para el código de producción puede facilitar la introducción de vulnerabilidades de seguridad debido a la necesidad de usareval()
. Sería mejor usar un formato como JSON en su lugar para almacenar y volver a leer los valores. La velocidad será comparable.fuente
echo $a, $b;
sintaxis cuando puede hacerloecho $a . $b;
: si $ ao $ b son cadenas realmente grandes, entonces este último usará memoria y tiempo adicionales para crear una versión concatenada separada de las cadenas en la memoria anterior. puede comenzar a dar salida al navegador.echo $a; echo $b;
.Solo para agregar a la respuesta de John ,
echo
debería ser el único que use para imprimir contenido en la página.print
Es un poco más lento.var_dump()
yprint_r()
solo debe usarse para depurar.También vale la pena mencionar que,
print_r()
yvar_dump()
por eco, por defecto, agregue un segundo argumento alprint_r()
menos que se evalúe como verdadero para que regrese, por ejemploprint_r($array, TRUE)
.La diferencia entre hacer eco y volver son:
fuente
echo
ing yreturn
ing?print_r
parámetro de retorno mientras codificaba PHP. Sin embargo, tendía a escribirprint_r( $foo, 1 );
. Es más rápido escribir;) Y sobre esto no me importa mucho la legibilidad ya que el nombreprint_r
tampoco me parece muy descriptivo.var_dump()
no admite el segundo argumento, lo que le permite devolver un valor comoprint_r()
sí, porquevar_dump()
puede aceptar múltiples argumentos para generar.No tener tipo de devolución
Tener tipo de devolución
Salidas como formateadas,
fuente
La diferencia entre echo , print , print_r y var_dump es muy simple.
echo no es en realidad una función sino una construcción de lenguaje que se utiliza para imprimir la salida. Es marginalmente más rápido que la impresión.
También puede usar la declaración echo con o sin paréntesis
Al igual que echo construct print, también es una construcción de lenguaje y no una función real. La diferencia entre echo e print es que print solo acepta un único argumento y print siempre devuelve 1. Mientras que echo no tiene valor de retorno. Entonces, la declaración de impresión se puede usar en expresiones.
Al igual que echo , la impresión se puede usar con o sin paréntesis.
La función print_r () se usa para imprimir información legible por humanos sobre una variable. Si el argumento es una matriz, la función print_r () imprime sus claves y elementos (lo mismo para los objetos).
La función var_dump generalmente se usa para depurar e imprime la información (tipo y valor) sobre una variable / matriz / objeto.
fuente
Eco :
Es una declaración, no una función Sin valor de retorno
No se requieren los paréntesis
No imprimir matriz
Impresión
Es una función real
Tipo de retorno 1
Requerido los paréntesis
No imprimir matriz
Imprimir_r
Imprimir en formato legible para humanos
Cadena no entre comillas
Información no detallada de tipo variable y todo
var_dump
Toda la información de volcado de variables como tipo de elemento y subelemento
fuente
print
es una función real, es una construcción de lenguaje como echo. También se puede usar como una declaración. no es una declaración ni se puede usar en una. no no requiere paréntesis, ni tampoco eco o impresión utilizan los paréntesis, como una función haría. También se perdió una de las principales diferencias: echo acepta múltiples cadenas para hacer eco separadas por comas.echo
print
** Echocan acepta múltiples expresiones mientras que print no puede. La función PHP Print_r () se usa para devolver una matriz en una forma legible para humanos. Simplemente se escribe como
fuente
echo: echo es una construcción de lenguaje en la que no es necesario usar paréntesis y puede tomar cualquier número de parámetros y devolver void.
print: es una construcción de lenguaje donde no es necesario usar paréntesis, solo toma un parámetro y devuelve
prinf: es una función que toma al menos una cadena y estilo de formato y devuelve la longitud de la cadena de salida.
fuente
print_r()
se utiliza para imprimir la matriz en formato legible para humanos.fuente
print_r () puede imprimir el valor, pero también si se pasa el segundo parámetro de indicador y es VERDADERO: devolverá el resultado impreso como una cadena y nada se enviará a la salida estándar. Sobre var_dump. Si se instala el depurador XDebug, los resultados de salida se formatearán de una manera mucho más legible y comprensible.
fuente
Ambos son construcciones del lenguaje. echo devuelve nulo e print devuelve 1. echo se considera un poco más rápido que print.
fuente