Cuál es la Diferencia entre echo y print y cómo usarlos en PHP

Las palabras "echo" y "print" son dos elementos en programación PHP que son muy comunes en todas nuestras aplicaciones que desarrollamos, ya que esos dos elementos nos permiten imprimir en pantalla MVC cadenas o string mostrando mensajes y datos al usuario de nuestras aplicaciones.

En este artículo vamos a ver con todo detalle qué son estos elementos, cuáles son sus diferencias, cuál es su sintaxis y ejemplos de cómo usarlos correctamente de manera que apliques estos conocimientos (si es que aún no lo has hecho) para que tu estilo de programación y tú código sea lo más óptimo y eficiente posible.

1. "echo" y "print" son Constructores de Lenguaje NO Funciones

Lo primero que debemos comprender es que echo y print son dos Constructores de Lenguaje y no son Funciones de PHP, por lo que debemos entender qué es un Constructor de Lenguaje.

Los Constructores de Lenguaje en PHP también se conocen como Palabras Reservadas, lo que quiere decir que no se pueden usar como constantes, nombres de clases, nombres de funciones o métodos. Si se pueden usar como nombres de variables, pero no se recomienda porque podrían dar lugar a confusiones.

Observación: Por ejemplo exit es una palabra reservada que indica al programa que termine su ejecución. Aunque podemos usar ese nombre en una variable como $exit, no es recomendable ya que podríamos confundirnos. Aunque personalmente considero que hoy en día esta confusión es improbable, ya que por lo general los Editores de Código PHP resaltan de diferente color las Variables y los Constructores de Lenguaje o Palabras Reservadas.

Ejemplos de estos Constructores de Lenguaje o Palabras Reservadas son: die, if, else, elseif, while, include_once, return y exit, entre otras. Para ver una lista completa puedes consultar la Documentación Oficial en php.net en el siguiente enlace: http://www.php.net/manual/es/reserved.keywords.php.

Los Constructores del Lenguaje son elementos que realizan procesos muy especializados y que se encuentran directamente en el Motor de PHP.

Las Funciones por otro lado, son parte de un Programa no del Lenguaje de Programación, es decir, no se encuentran en el Motor de PHP. Estas Funciones realizan determinadas tareas y están compuestas por Constructores del Lenguaje, en cambio se encuentran disponibles en una Biblioteca de funciones que incluye PHP, por ejemplo funciones como print_r y var_dump.

Para ver una lista bastante completa de Funciones puedes hacer click en el siguiente enlace: http://www.php.net/manual/es/indexes.functions.php.

Creo que con esto explicado es suficiente para comprender el resto del artículo. En otro artículo trataremos el tema de los Constructores de Lenguaje y las Funciones en PHP de manera más detallada.

2. Semejanzas entre "echo" y "print".

Primero veamos las semejanzas de estos dos Constructores de Lenguaje:

  • Los dos Imprimen Cadenas o String en la Pantalla del Cliente (Computadora, Laptop, Smartphone, etc.).
Código:
<?php
print 'Esto se imprime con print';
echo '<br />'// Esto es para cambiar de línea
echo 'Esto se imprime con echo';
?>

Resultado:
Esto se imprime con print
Esto se imprime con echo

Comentarios:
El resultado que se imprime es igual tanto con echo como con print. En este sentido ambos elementos producen el mismo resultado.
  • Como NO son Funciones NO es necesario utilizar paréntisis para indicar la cadena a imprimir.

Código:
<?php
print('Impreso con print y con paréntesis');
print '<br />';
print 'Impreso con print y sin paréntesis';
echo '<br /><br />';
echo('Impreso con echo y con paréntesis');
echo '<br />';
echo 'Impreso con echo y sin paréntesis';
?>

Resultado:

Impreso con print y con paréntesis
Impreso con print y sin paréntesis

Impreso con echo y con paréntesis
Impreso con echo y sin paréntesis

Comentarios:
Como puedes observar se pueden usar o no paréntesis con echo y print y no marca error. Sin embargo, te sugerimos que NO uses los paréntesis ya que implican más tiempo el escribir el código... y recuerda que los programadores siempre buscamos maneras de ahorrar tiempo.

  • Para delimitar la cadena a imprimir, pueden utilizarse Comillas Dobles (") o Comillas Simples (').

Código:
<?php
// Definimos la variable $mes
$mes = 'AGOSTO';
print 'Impreso con print, con la variable $mes con comillas simples';
print '<br />';
print "Impreso con print, con la variable $mes con comillas dobles";
print '<br /><br />';
echo 'Impreso con echo, con la variable $mes con comillas simples';
echo '<br />';
echo "Impreso con echo, con la variable $mes con comillas dobles";
?>

Resultado:
Impreso con print, con una variable $mes con comillas simples
Impreso con print, con una variable AGOSTO con comillas dobles

Impreso con echo, con una variable $mes con comillas simples
Impreso con echo, con una variable AGOSTO con comillas dobles

Comentarios:
Tanto print como echo producen los mismos resultados al imprimir. Aquí lo importante es notar es el uso de las comillas dobles o simples cuando se usan variables en la cadena.

Como puedes observar al inicio del código definimos la variable $mes como "AGOSTO" y la incluimos en cada una de las opciones con print y con echo.

Cuándo usar Comillas Dobles: Cuando queremos incluir variables en la cadena y queremos que se impriman los valores de la variable necesitamos usar Comillas Dobles tanto en print como con echo.

Cuándo usar Comillas Simples: Cuando queremos imprimir el nombre de la variable pero no queremos que se sustituya por su valor usamos Comillas Simples tanto en print como con echo.

  • Las dos permiten Concatenar (unir) varias cadenas y/o variables para formar una sola cadena a imprimir.

Código:
<?php
// Definimos la varianle $mes
$mes = 'OCTUBRE';
print 'El mes de '.$mes.' está Concatenado con print.';
echo '<br />';
echo 'El mes de '.$mes.' está Concatenado con echo.';
?>

Resultado:
El mes de OCTUBRE está Concatenado con print
El mes de OCTUBRE está Concatenado con echo

Comentarios:
Puedes observar que el resultado de ejecutar el código PHP es el mismo tanto en print como con echo. De esta forma ambos elementos permiten usar la Concatenación, claro está, siguiendo las reglas de concatenación que aplican.

Recomendación: En la medida de lo posible, en lugar de concatenar variables usando el método mostrado en el ejemplo anterior, te recomendamos que uses la opción de incluir las variables dentro de la cadena usando echo o print delimitando la cadena usando comillas dobles ("). Recuerda que si usas comillas simples (') se imprimirá el nombre de la variable y no su valor. En el siguiente ejemplo de código te muestro cómo puedes optimizar el ejemplo anterior.

Código:
<?php
$mes = 'OCTUBRE';
print "La variable del mes de $mes se imprimió sin Concatenar, sólo usando comillas dobles con print";
echo '<br /><br />';
echo "La variable del mes de $mes se imprimió sin Concatenar, sólo usando comillas dobles con echo";
?>

Resultado:
La variable del mes de OCTUBRE se imprimió sin Concatenar, sólo usando comillas dobles con print

La variable del mes de OCTUBRE se imprimió sin Concatenar, sólo usando comillas dobles con echo

Comentarios:
Usando esta forma de incluir las variables en la cadena a imprimir podemos optimizar el código y nuestro tiempo de programación. Pero recuerda que puede haber ocasiones en que sea necesario usar la Concatenación.

3. Diferencias entre "echo" y "print"

Ya que conoces las semejanzas entre echo y print es el momento de conocer cuáles son sus principales diferencias.

  • Con print sólo puedes imprimir una cadena a la vez.

Código con print:
<?php
print 'Primera Cadena ', 'Segunda Cadena';
?>

Resultado:
Parse error: syntax error, unexpected ',' in...

Comentarios:
Como puedes ver al tratar de imprimir dos cadenas con print el resultado es un mensaje de Error diciéndonos que hay un error en la sintaxis y que existe una coma (,) inesperada. De esta forma verificamos que NO se pueden imprimir dos cadenas con una sola declaración de print.

Aunque con print sólo puedes imprimir una cadena a la vez, esto puede solventarse simplemente Concatenando las cadenas que quieres imprimir con print. Ejemplo:

print 'Primera Cadena '.'Segunda Cadena';

  • Con echo se pueden imprimir las cadenas que se quieran simplemente separando cada una por una coma (,).

Código con echo:
<?php
$cadena = 'Segunda Cadena';

echo 'Primera Cadena ', 'Segunda Cadena';
echo '<br />';
echo 'Primera Cadena ','Segunda Cadena';
echo '<br />';
echo 'Primera Cadena ', $cadena;

?>

Resultado:
Primera Cadena Segunda Cadena
Primera Cadena Segunda Cadena
Primera Cadena Segunda Cadena


Comentarios:
En el ejemplo del código anterior te presenté tres formas de echo y las tres imprimen el mismo resultado "Primera Cadena Segunda Cadena". Como puedes observar en esta ocasión el código no nos genera un error al ejecutarlo como en el caso de print

Aquí sólo hay que destacar que en el caso de la opción donde incluimos la variable $cadena, no fue necesario concatenarla o agregarla entre las comillas

  • print siempre devuelve el valor de 1, por esto se puede utilizar en expresiones complejas.

Código con print:
<?php
$impresion = print('Factura');
echo '<br />';
if($impresion){
     echo 'Se Imprimió Factura con Print';
}
?>

Resultado:
Se imprimió Factura con Print

Comentarios:
Como print siempre devuelve o return 1 (true), y aquí lo asignamos a la variable $impresion y por lo tanto ese valor lo podemos utilizar en un IF y después lo imprimimos con echo para verificar que valor se asignó, y podrás ver que se cumple la condicion IF y se imprime el mensaje.

  • echo no tiene valor de return, es decir, no devuelve ningún valor al ejecutarse.

Código con echo:
<?php
$impresion = echo 'Factura';
?>

Resultado:
Parse error: syntax error, unexpected 'echo' (T_ECHO) in...

Comentarios:
A diferencia de print cuando intentamos asignar el resultado de imprimir 'Factura' con echo, nos devuelve un Error, ya que echo no devuelve ningún valor (el return es void, vacio) y no se puede asignar a ninguna variable.

  • Otra diferencia es que echo es ligeramente más rápido de ejecutar que print. Esto se considera así debido a que print tiene que devolver el valor 1 mientras que echo no. Pero en realidad la mayoría de los programadores y documentación concuerdan en que es una diferencia muy pequeña.
  • echo tiene una opción de sintaxis abreviada usando el símbolo de = sin necesidad de usar la palabra echo.

Sintaxis Normal de echo:
<?php
$variable = 'Impreso con sintaxis normal.';
echo $variable;
?>

Resultado:
Impreso con sintaxis normal.

Sintaxis Abreviada de echo:
// Suponiendo que la variable $variable = 'Impreso con sintaxis abreviada.'

<?=$variable?>

Resultado:
Impreso con sintaxis abreviada.

Comentarios:
Con la sintaxis abreviada de echo nos permite optimizar nuestro código y lo que siempre buscamos, logramos programar más rápido ya que no necesitamos escribir la palabra php y echo.

4. ¿Qué es más conveniente de usar "echo" o "print"?

Para finalizar quiero compartir contigo algunas sugerencias con la finalidad de optimizar tu código y tiempo de programación.

  • Siempre utiliza echo en lugar de print, a menos que requieras usar la propiedad de print de devolver 1.
  • Principalmente te recomiendo usar echo por su ligera rapidez sobre print.
  • También cuando vayas a imprimir los valores de las variables dentro del código HTML de una página web, te recomiendo utilizar la Sintaxis Abreviada de echo:
    <?=$variable?>. Esto en verdad te hace que seas más eficiente y rápido al momento de programar.
  • Siempre usa las comillas simples (') para delimitar la cadena que vayas a imprimir con echo. A menos que quieras imprimir los valores de una o más variables en la cadena, en este caso debes utilizas las comillas dobles (").
  • Trata de evitar Concatenar cadenas y variables al imprimir con echo. En lugar de ello trata de incluir las variables dentro de la cadena y delimítala con comillas dobles (").

Jesús Rivera
SieteCifras.com


Deja Tu Comentario

Nombre
Email
Website
Mensaje

No Hay Comentarios