¿Te ha gustado el artículo?
0
¿Te ha gustado el artículo?
0

¿Qué es PHP? Tutorial para principiantes

PHP es un lenguaje de programación de código abierto del lado del servidor que se utiliza principalmente para crear páginas web dinámicas. La abreviatura nació originariamente de “Personal Home Page Tools”, aunque hoy en día se ha convertido en el acrónimo recursivo para “PHP: Hypertext Preprocessor”.

Mientras que los lenguajes del lado del cliente como HTML, CSS o JavaScript son interpretados primero por el navegador web en el momento de abrir una página, el código PHP se ejecuta en el servidor web. Allí, los scripts de PHP generan el código HTML que se envía después al navegador. Este no recibe el código real (el script de PHP), sino el resultado de la ejecución del mismo.

El ámbito de aplicación principal de PHP es la programación del lado del servidor, sobre todo de páginas dinámicas y aplicaciones. Otras áreas de implementación son la creación de aplicaciones de escritorio o la programación de líneas de comandos. A pesar de tener una sintaxis sencilla para principiantes, PHP ofrece una cantidad remarcable de funciones. Este lenguaje de programación se distingue por su amplio soporte a bases de datos, puede utilizarse en todo tipo de plataformas y está cubierto por una licencia PHP especial que permite su libre utilización y modificación del código fuente, una combinación más que convincente.

Cabe destacar que cuatro de los sistemas de gestión de contenidos más populares, es decir, WordPress, TYPO3, Joomla y Drupal, se basan en PHP. Un análisis de mercado de W3Techs establece que este lenguaje de scripts se emplea en el 82,4 por ciento de todas las páginas de la World Wide Web (datos del 01 de febrero de 2017), lo que indica que PHP es, con diferencia, el lenguaje de programación del lado del servidor más popular en el marco del desarrollo web. Esto se convierte en motivo suficiente para que cada vez más usuarios se familiaricen con las posibilidades de PHP: Hypertext Preprocessor. 

Nuestro tutorial de PHP está dirigido básicamente a principiantes y puede ser considerado como una iniciación en el mundo de la programación del lado del servidor. No obstante, muchos ejemplos presuponen ciertos conocimientos de los fundamentos del desarrollo web. También es recomendable familiarizarse antes con el lenguaje de marcado HTML.

La manera más rápida de aprender PHP es entendiendo los ejemplos y adaptándolos a las necesidades de cada proyecto web. Todo lo que se necesita para la programación con PHP es un servidor web con un intérprete de PHP, un editor de textos (por ejemplo, Notepad++ o Vim) y un navegador web. Como servidor para una primera inclusión es recomendable utilizar el entorno de prueba local XAMPP, puesto a disposición por Apache Friends para los sistemas operativos Windows, Linux y macOS de forma gratuita.

Instalación de PHP

Para poder ejecutar los scripts de PHP se necesita, en primer lugar, un servidor web que sea capaz de interpretar este lenguaje de programación. Para ello, tiene que complementarse con un intérprete PHP. Se trata, en este sentido, de un componente de software que puede identificar los pasajes de un archivo que contienen código PHP. En principio, PHP se puede ejecutar en cualquier servidor web y el intérprete forma parte del paquete de descarga de PHP. La versión actual puede descargarse de manera gratuita desde la página web oficial del proyecto php.net.

Por regla general, el intérprete de PHP está integrado por medio de un módulo de servidor o como protocolo FastCGI. Por razones de rendimiento se desaconseja utilizar el intérprete como programa CGI. En la práctica, PHP suele usarse en combinación con el servidor Apache HTTP. Si esta conexión se completa con la base de datos MySQL o MariaDB, se puede hablar, en función del sistema operativo, de LAMP (Linux), de WAMP (Windows) o de MAMP (macOS).

Los stacks web de este tipo se ofrecen como pilas de software preconfiguradas. Para aprender PHP es recomendable usar el paquete completo de XAMPP, que contiene la instalación local del servidor web Apache, el sistema de bases de datos MariaDB y los lenguajes de programación Perl y PHP. En el tutorial sobre XAMPP de nuestra Digital Guide encontrarás un manual de instalación detallado.

Atención

XAMPP está concebido meramente como un servidor de prueba. Esta pila de software ofrece a los desarrolladores web la posibilidad de agregar un entorno de prueba completo para scripts, páginas HTML y hojas de estilo en un tiempo récord. Sin embargo, no se puede garantizar el funcionamiento seguro como servidor web en Internet. Por eso, XAMPP debe emplearse de un modo local, lo que significa que los servicios de XAMPP no tienen que estar disponibles desde Internet.

PHP básico: la sintaxis del lenguaje de scripts

Una vez hayas configurado tu servidor web local (por ejemplo, con ayuda de XAMPP), tienes que comprobar que PHP esté instalado correctamente y pueda ejecutar scripts.

Definición

un script es un programa informático en general de pequeñas dimensiones que no se compila en código binario previamente. Los scripts se escriben en un lenguaje de programación como PHP, Perl o JavaScript y son ejecutados por un intérprete en el servidor web (del lado del servidor) o por un motor de renderizado en el navegador web (del lado del cliente).

Abre tu editor de textos preferido e introduce el siguiente script de PHP:

<?php
phpinfo();
?>

Los scripts de PHP siempre se basan en el mismo esquema. La etiqueta PHP de apertura <?php señaliza que se va a iniciar un entorno de scripts. A esto le sigue el propio código PHP en forma de órdenes o instrucciones. En el ejemplo se trata de la llamada a la función phpinfo(). La mayoría de funciones requieren uno o varios parámetros situados entre paréntesis. En el caso de phpinfo(), estos son opcionales: phpinfo( INFO_ALL ). Cada función termina con un punto y coma (;) y para cerrar el script entra en juego la etiqueta PHP de cierre, es decir, ?>.

Definición

las funciones son subprogramas que permiten externalizar partes del código de programa. Para evitar la redundancia, se definen las tareas recurrentes como funciones y se hace un llamamiento a las mismas con ayuda de un nombre de función. Los desarrolladores utilizan para ello funciones de PHP predefinidas o crean sus propios subprogramas.

Guarda el archivo de texto con el nombre test en formato .php (script PHP) y abre el servidor web. Siempre y cuando utilices el entorno de prueba de XAMPP, coloca test.php en el directorio de XAMPP en htdocs (C:\xampp\htdocs).

Se puede acceder al archivo del ejemplo introduciendo el siguiente URL en el navegador web: http:// localhost/ test.php. En caso de utilizar otro servidor web o la configuración personalizada del software de XAMPP, selecciona el URL de la ruta del archivo correspondiente.

Atención

mientras que en las direcciones de Internet se utiliza la barra diagonal (/) como símbolo delimitador de directorios, el explorador de Windows utiliza la barra invertida (\). Los navegadores web modernos, sin embargo, transforman la barra invertida en una diagonal en la barra de navegación de forma automática.

Al introducir el URL http:// localhost/ test.php se está indicando al navegador web que solicite el archivo test.php al servidor web. El servidor Apache HTTP u otro software de servidor web abre el archivo en el directorio correspondiente. La terminación .php informa de que el archivo contiene código PHP. Ahora se pone en marcha el intérprete de PHP integrado en el servidor web, el cual hace un recorrido por el documento hasta dar con la etiqueta PHP de apertura <?php, la cual señala el comienzo del código PHP. Tras ello, el intérprete ya tiene la capacidad de ejecutar el código PHP y de generar una salida en HTML que se envía al navegador desde el servidor web. 

Si PHP se ha instalado correctamente, aparecerá la página web siguiente como resultado de la ejecución del script:

La función phpinfo() consiste en la abreviatura del valor estándar phpinfo( INFO_ALL ), el cual ofrece información pormenorizada sobre la configuración de PHP en el servidor web. Si no se puede localizar ninguna versión de PHP, el navegador mostrará un mensaje de error o entregará el código PHP sin interpretar al navegador.

“Hello World!” – Así puedes crear texto con echo

Si la instalación de PHP se lleva a cabo sin ningún tipo de errores, ya se pueden escribir los primeros scripts propios. Para ello es apropiada la instrucción echo. A diferencia de phpinfo(), echo no representa una función, sino que se trata, más bien, de una construcción del lenguaje que permite distribuir el siguiente string como texto.

Definición

las palabras reservadas son instrucciones que se utilizan en PHP para controlar la ejecución de los programas. Entre las palabras reservadas se encuentran, además de echo, instrucciones como if, for, do, include, return, exit o die. A diferencia de las funciones, en este caso no se necesitan los paréntesis.

Crea un nuevo archivo PHP para tu primer script propio y escribe el siguiente código:

<?php
echo 'Hello World!';
?>

La etiqueta de apertura <?php da comiezo a un entorno de script. A esta le sigue tanto la palabra reservada echo como el string Hello World! entre comillas simples. Con la etiqueta ?> se cierra el script. En este sentido hay que prestar atención al punto y coma que va detrás de la instrucción. En lugar de Hello World! se puede utilizar cualquier otro texto.

Definición

en informática se entiende por string una secuencia de caracteres de longitud variable o, en otras palabras, una cadena de consonantes, números y símbolos. En el ámbito de la programación, los strings están considerados como tipos de datos independientes y guardan diferencias con otros tipos de datos como los integers (números enteros) o los floats (números de punto flotante).

Guarda el script con el nombre de hello.php en la carpeta htdocs de tu servidor web y accede al archivo a través del URL localhost/hello.php en el navegador. Si el código se ha transmitido correctamente, ahora debería mostrarse en la ventana del navegador la secuencia de caracteres que has usado:

Cada texto que se emite con echo puede estar formado por etiquetas HTML en caso de ser necesario, las cuales son interpretadas por parte del navegador web tras la correspondiente especificación de HTML. Puedes comprobarlo tú mismo, por ejemplo, con el siguiente script:

<?php
echo '<h1>Hello World!</h1>
<p>This is my first PHP page.</p>';
?>

Al hacer la solicitud al navegador web, se puede ver el resultado de la ejecución del script de la siguiente manera:

La secuencia de caracteres incluida en las etiquetas del <h1>, es decir, Hello World!, es interpretada por el navegador como título de primer nivel y a esta le siguen un salto de línea automático y la etiqueta de párrafo <p>.

En función de las necesidades, echo se puede emplear tanto con comillas sencillas (') como con comillas dobles ("). Si se quiere emitir texto, no hay diferencia alguna con respecto al tipo de comillas que se escojan, pero esto cambia en cuanto las variables entran en acción.

Variables

La palabra reservada echo resulta de una utilidad mayor que la propia emisión de texto, la cual puede implementarse también sin PHP y tomando HTML como base. La verdadera plusvalía de echo está basada en el hecho de que la instrucción permite generar textos de manera dinámica con ayuda de variables.

Los usuarios de PHP se pueden encontrar con variables que tienen, por ejemplo, la siguiente forma:

$ejemplo

Cada variable consta del símbolo del dólar ($), seguido del nombre de la variable. Las variables se utilizan en los scripts de PHP para integrar datos externos en páginas web. En este sentido se puede hablar de valores muy variados que van desde números simples y cadenas de caracteres hasta textos completos o estructuras de documentos HTML.  

PHP diferencia entre siete tipos de variables:

Tipos de variables Descripción
String Un string es una secuencia de caracteres, que puede tratarse de una palabra, de una frase, de un texto o de la totalidad del código HTML de una página web.
Integer Un integer es un número entero y sin decimales que puede ser positivo o negativo.
Float Un float es un número de punto flotante, es decir, un valor numérico con decimales. En los lenguajes de programación, la coma se escribe con un punto (.). PHP permite colocar hasta 14 caracteres detrás de la coma.
Boolean Las variables booleanas son el resultado de una operación lógica y solo comprenden dos constantes: TRUE (verdadero) y FALSE (falso). Este tipo de variables se aplica cuando se trabaja con condiciones.
Array Un array es una variable que puede albergar varios elementos. Se trata de una agrupación de diversos datos estructurados formando una matriz.
Object La variable object permite a los programadores definir tipos de datos propios y se aplica en la programación orientada a objetos. Las variables del tipo object no se incluyen en nuestro tutorial de PHP.
NULL NULL representa una variable sin valor. Para las variables del tipo NULL, este es el único valor.

La administración central de los contenidos tiene lugar, en general, con ayuda de sistemas de bases de datos. Los valores para las variables pueden definirse directamente en el script. Este tipo de clasificación se realiza según el esquema siguiente: 

$ejemplo = "Valor";

El característico símbolo del dólar va seguido del nombre de la variable (en este caso ejemplo), el cual se une al valor entrecomillado con el símbolo de igualdad (=).

Atención

los valores para las variables del tipo integer y float no se escriben entre comillas (p. ej., $ejemplo = 24; o $ejemplo = 2.7;)

PHP te da la libertad de designar variables según tu arbitrio, pero surgen aquí ciertas limitaciones:

  • Cada variable comienza con el símbolo del dólar. 
  • El nombre de las variables es una secuencia de caracteres formada por letras, números y guiones (p.ej., $ejemplo_1).
  • Un nombre de variable válido siempre comienza con una letra o con un guion bajo ($ejemplo1 o $_ejemplo), pero nunca con un número (incorrecto: $1ejemplo).
  • PHP distingue entre mayúsculas y minúsculas ($ejemplo ≠ $Ejemplo).
  • Los nombres de las variables no pueden contener espacios o saltos de línea (incorrecto: $ejemplo 1)
  • El usuario no puede hacer uso libre de las secuencias de caracteres reservadas por PHP para otros propósitos (p. ej., $this)

Veámoslo en un ejemplo:

<?php
$author = "John Doe";
echo "<h1>Hello World!</h1> 
<p>This dynamic web page was created by $author.</p>";
?>

La etiqueta de apertura de PHP va seguida de la definición de la variable: en el caso de $author se utilizaría el valor John Doe. A la hora de ejecutar el script, la variable $author se sustituye por el valor John Doe cada vez que se haga mención a ella en el entorno del script. El siguiente gráfico muestra cómo se refleja esto en el navegador web.

Si ocurre un error y la página web no procede de John Doe, sino de su colega alemán Max Mustermann, la variable con el nombre $author tiene que adaptarse para subsanar el fallo.

Esto resulta especialmente eficiente cuando una variable aparece varias veces en un script. En este caso solo se tiene que corregir una parte de la misma, es decir, aquella en donde se haya definido el valor de la variable.   

Aquí queda patente el punto fuerte de PHP: los contenidos pueden integrarse como variables, lo que se constituye como la base del desarrollo web dinámico. A diferencia de las páginas web estáticas, que se presentan como páginas HTML extraditables, las páginas web dinámicas se generan en el momento en que se abren. Para ello, el intérprete de PHP descarga cada uno de los elementos de la página web solicitada con ayuda de las variables de las diferentes bases de datos y los integra en una página HTML ajustada a la solicitud.

Las ventajas de este concepto de diseño son evidentes: si se corrigen los elementos de la página web (p. ej., en el pie de página), no es necesario realizar los ajustes de forma manual en cada una de las subpáginas del proyecto web. En lugar de eso, es suficiente con actualizar la entrada en la base de datos. De esta manera se asume la revisión de manera automática para todas las páginas web que enlazan los datos correspondientes como variables.

Si una variable se define varias veces en un script, la nueva definición sobreescribe a la anterior. El siguiente echo siempre ofrece el valor actual de una variable.

<?php
$author = "John Doe";
echo "<h1>Hello World!</h1> 
<p>This dynamic web page was created by $author.</p>";
$author = "Max Mustermann";
echo " <p>Supported by $author.</p>";
?>

 

 

En el ejemplo de código se otorga el valor John Doe a la variable $author y, posteriormente, se sustituye por el valor Max Mustermann.

En lo que respecta al uso de las comillas, a diferencia de los strings, no es necesario que las variables se introduzcan entrecomilladas:

<?php
$author = "John Doe";
echo $author;
?>

A no ser que la variable se tenga que utilizar dentro de un string, en cuyo caso habrá que recurrir a las comillas dobles ("). Estas indican al intérprete de PHP que tiene que buscar variables en el string para sustituirlas con los valores asociados a ellas. Las secuencias de caracteres expresadas entre comillas simples (') serán interpretadas y reproducidas como información puramente textual incluso cuando si son variables. Lo puedes comprobar tú mismo con la siguiente secuencia de código:

<?php
$author = "John Doe";
echo '<h1>Hello World!</h1> 
<p>This dynamic web page was created by $author.</p>';
?>

Puede que a este respecto surja la pregunta de lo que pasaría si se eliminaran las comillas completamente. En este caso PHP informaría de un error de sintaxis.

Mensajes de error y enmarascaramiento

En caso de que haya errores sintácticos, el código PHP no es válido y el intérprete de PHP emite un mensaje de error. También puede ocurrir lo mismo cuando, por ejemplo, se utiliza la instrucción echo con un string sin comillas:

<?php
echo Hello World!;
?>

Los mensajes de error contienen, en la mayoría de los casos, información acerca de la ubicación de los errores, ofreciendo, así, datos importantes para su erradicación.

En dicho ejemplo es de suponer que hay un error en la línea 2 del código de programa, pues es exactamente ahí donde hemos eliminado las comillas para demostrarlo.

Los errores sintácticos también surgen cuando se quieren utilizar caracteres como texto y estos están asociados con una determinada tarea. Un ejemplo sería la comilla sencilla ('). Los símbolos como este solo aparecen en PHP en calidad de texto cuando se hace entender al intérprete que el símbolo no estaría relacionado con su verdadero objetivo. En el caso de las comillas simples, existen dos posibilidades: por un lado se puede enmarcar un string con comillas simples entre comillas dobles o, por otro, se pueden enmascarar las comillas por medio de una barra invertida (\):

<?php
echo '\'Hello World!\' ';
?>

También es posible la combinación de comillas sencillas y dobles:

<?php
echo " 'Hello World!' ";
?>

Sin embargo, esta grafía resultaría incorrecta:

<?php
echo ' 'Hello World!' ';
?>

En los ejemplos aparecen espacios entre las comillas para mejorar la legibilidad de los mismos.

Operadores de concatenación

Si se quiere incluir más de una variable en un script de PHP de manera simultánea, se puede hacer uso de lo aprendido hasta ahora:

<?php
$author1 = "John Doe";
$author2 = "Max Mustermann";
echo "<h1>Hello World!</h1> 
<p>This dynamic web page was created by $author1 and $author2.</p>";
?>

Ambas variables se escriben con el resto del texto que se va a visualizar en el string señalado con las comillas dobles. PHP reconoce automáticamente las variables mediante el símbolo del dólar ($) y coloca tras ellos los valores correspondientes.

Entre los programadores, seguir este procedimiento es considerado un trabajo sucio. En este sentido existe el dogma de que las variables no deberían formar parte del string y una de las razones para ello es que gran parte de los lenguajes de programación exigen dicha separación. Lo más importante es, sin embargo, que PHP también reclama la separación de string y variable cuando se trabaja con llamadas a funciones o variables complejas. En este caso es recomendable realizar esta separación incluso en el caso del texto sin formato aun cuando no fuera estrictamente necesario.

Al trabajar con variables siempre entran en juego varios elementos que deben estar interconectados entre sí. Para ello entra en juego el operador de concatenación (.).

Si se programa un código “limpio”, este debería tener el siguiente aspecto para el ejemplo mencionado anteriormente:

<?php
$author1 = "John Doe";
$author2 = "Max Mustermann";
echo '<h1>Hello World!</h1> 
<p>This dynamic web page was created by ' . $author1 . ' and ' . $author2 . '.</p>';
?>

Nos encontramos aquí ante tres strings y dos variables que están encadenados formando una secuencia de caracteres.

String1   Variable1   String2   Variable2   String3
'<h1>Hello World!</h1><p>This dynamic web page was created by ' . $author1 . ' and ' . $author2 . '.</p>'

Es importante señalar que un operador de concatenación une strings o variables sin espacios. Si se quiere incluir un espacio, este tiene que escribirse, al igual que en el ejemplo, en el string y con comillas.  

Los programadores no solo hacen uso de los operadores de concatenación para vincular strings y variables, sino también para prolongar las variables. Veamos cómo funciona con el siguiente ejemplo:

<?php
$example = 'Hello ';
$example .= 'World';
echo $example;
?>

Para prolongar el valor de una variable es necesario definirlo de nuevo, pero colocando el operador de concatenación punto (.) delante del signo de igualdad. Se trataría de la abreviación habitual para $example = $example . 'World' ($ejemplo = $ejemplo . 'Mundo').

PHP agrega el nuevo valor al ya previamente definido. Si se quiere incluir un espacio entre ambos valores, este debe ir al final del primer string, tal y como se muestra en el ejemplo.

Cómo enlazar PHP en HTML

El intérprete de PHP solo se interesa, en principio, por el código colocado entre una etiqueta de PHP de apertura y otra de cierre:

<?php [Esta área será analizada por el intérprete de PHP] ?>

Este ignora el resto de fragmentos del documento y los transmite al servidor web tal y como aparecen. De esta forma, el código PHP puede integrarse en cualquier documento HTML para, por ejemplo, crear una plantilla para un sistema de gestión de contenidos. En este caso hay que tener en cuenta que los documentos HTML que contienen código PHP se han de guardar como archivos PHP. De lo contrario, el intérprete de PHP no podría procesar el documento, sino que este le sería entregado directamente al navegador, lo que tendría como consecuencia que el código del programa aparecería como texto plano en la página web.

Se puede imaginar al intérprete de PHP como el colega perezoso del servidor web que solo trabaja cuando se le exige explícitamente por medio de, por ejemplo, una etiqueta de apertura de PHP.

Si quieres combinar HTML y PHP, escribe la página HTML en su forma habitual conforme a la estructura clásica del documento y guárdala con la terminación .php.

<!DOCTYPE html>
<html lang="es">
  <head>
    <meta charset="utf-8">
    <title>My first PHP page</title>
  </head>
    <body>
  <h1>Hello World</h1>
  <p>What is the current time and date?</p>
  </body>
</html>

Complementa tu documento HTML para el script PHP, pero recuerda que la totalidad del código del programa ha de aparecer entre las etiquetas de PHP.

<!DOCTYPE html>
<html lang="es">
  <head>
    <meta charset="utf-8">
    <title>My first PHP page</title>
  </head>
  <body>
  <h1>Hello World</h1>
  <p>What is the current time and date?</p>
  <p>Your current time and date is: 
  <?php 
  echo date("d.m.Y H:i:s");
  ?>.</p>
  </body>
</html>

En el ejemplo se ha combinado la construcción del lenguaje echo con la función date() para visualizar del lado del servidor la fecha y el horario actuales como texto. El parámetro de la función muestra el formato deseado en forma de string:

d.m.Y H:i:s = dia.mes.año hora:minuto:segundo

Si el navegador web solicita un archivo de tales características, el intérprete de PHP ejecuta el script y escribe el horario actual en forma de texto en el documento HTML, el cual será entregado por el servidor web y será representado como página web.

La función de PHP para los comentarios

Al igual que el código HTML, PHP también da la posibilidad de incluir comentarios. El intérprete de PHP ignora los comentarios en el código fuente siempre y cuando estos tengan unas características adecuadas para la sintaxis. Para ello, PHP pone a disposición tres alternativas diferentes.

Si se quiere destacar toda una línea como comentario y excluirla de la interpretación, se utilizará la almohadilla (#) o las dos barras (//). En el siguiente ejemplo de código se emplean ambas posibilidades:

<?php
#This is a single-line comment!
echo '<h1>Hello World!</h1>
<p>This is my first PHP page.</p>';
//This is also a single-line comment!
?>

El editor de textos Notepad++ resalta los comentarios en color verde. Los pasajes de texto señalados como comentarios en el entorno del script no llegan siquiera al navegador web, a diferencia de los comentarios en HTML, puesto que el intérprete de PHP los ignora ya a la hora de ejecutar el script.

Asimismo, también se pueden insertar comentarios que comprenden varias líneas. Para ello, se puede marcar el inicio de una sección con comentarios con una barra seguida de un asterisco (/*) y el final con un asterisco seguido de una barra (*/).

<?php
/*
This is a multiple-lines comment block
that spans over multiple
lines
*/
echo '<h1>Hello World!</h1>
<p>This is my first PHP page.</p>';
?>

Este tipo de comentarios destacados no son analizados sintácticamente y, por lo tanto, no aparecen en la página web.

Los programadores utilizan los comentarios para estructurar el código fuente de los scripts, para hacer indicaciones para su posterior edición o para añadir datos internos como por ejemplo el autor o la fecha.

La inclusión de comentarios es opcional y no es recomendable abusar de su uso para garantizar la buena legibilidad del código fuente.

Realización de cálculos con variables

En nuestro tutorial para aprender a utilizar PHP ya has podido familiarizarte con las variables, a las que se han asignado en primera instancia valores string (cadenas de caracteres).  Ahora pasaremos a ocuparnos de variables que representan números enteros (integers) o números de punto flotante (floats).

Si las variables almacenan valores numéricos, PHP ofrece la posibilidad de realizar cálculos con ellas. Veamos a continuación la traducción de una suma sencilla de dos números enteros:

<?php
$numero1 = 237;
$numero2 = 148;
$resultado = $numero1 + $numero2;
echo "Resultado: " . $resultado;
?>

En primer lugar, a las variables $numero1 y $numero2 se les asigna los números enteros 237 y 148 y, a continuación, se define una variable del tipo $resultado, la cual alberga la suma de las variables $numero1 y $numero2. Para ello se emplea el operador aritmético + (más). Por último se emite el resultado de la suma con ayuda del constructor echo como texto. Hay que tener en cuenta en este sentido que en la asignación de valores numéricos a las variables no son necesarias las comillas.

El siguiente ejemplo de código, del que mostramos la versión en español de la subsiguiente captura de pantalla, muestra una selección de cálculos matemáticos que se pueden llevar a cabo con PHP del lado del servidor. Los operadores empleados se corresponden con gran parte de los operadores aritméticos estandarizados de las matemáticas.

Operador aritmético Operación Resultado
$numero1 + $numero2 Adición Suma de $numero1 y $numero2
$numero1 - $numero2 Sustracción Diferencia de $numero1 y $numero2
$numero1 * $numero2 Multiplicación Producto de $numero1 y $numero2
$numero1 / $numero2 División Cociente de $numero1 y $numero2
$numero1 ** $numero2 Exponenciación Resultado de elevar $numero2 a la potencia $numero1
<?php
$numero1 = 10;
$numero2 = 5;
$adicion = $numero1 + $numero2; 
$sustraccion = $numero1 - $numero2; 
$multiplicacion = $numero1 * $numero2; 
$division = $numero1 / $numero2; 
$exponenciacion = $numero1 ** $numero2; 
?>
<?php 
echo "Resultado de la adición: " . $adicion ."<br />"; 
echo "Resultado de la sustracción: " . $sustraccion . "<br />"; 
echo "Resultado de la multiplicación: " . $multiplicacion . "<br />";
echo "Resultado de la división: " . $division . "<br />";
echo "10 elevado a la quinta potencia (10^5): " . $exponenciacion . "<br />";
echo "Raíz de 81: " . sqrt(81) . "<br />";
?>

Para los cálculos más complejos se pueden combinar las diferentes operaciones aritméticas en un mismo script. Veamos cómo se plasmaría esto en español:

<?php
$numero1 = 10;
$numero2 = 5;
$resultado = 2 * $numero1 + 5 * $numero2 - 3 * sqrt(81);
echo "Resultado: " . $resultado; 
?>

El intérprete PHP determina los valores de las variables y calcula:

2 * 10 + 5 * 5 - 3 * √81 = 20 + 25 – 27 = 18

La función sqrt() calcula la raíz cuadrada del parámetro entre paréntesis. En este caso se aplica la clásica jerarquía de operadores de las matemáticas: los operadores de multiplicación y división tienen precedencia sobre los de adición y sustracción. La instrucción echo ofrece el resultado como string para el navegador web.

Los términos entre paréntesis son los que primero se evalúan en PHP. Ahora nos centraremos en los números de punto flotante:

<?php
$numero1 = 2.5;
$numero2 = 3.7;
$resultado = 2 * ($numero1 + 5) * ($numero2 - 3) * sqrt(81);
echo "Resultado: " . $resultado; 
?>

Como los lenguajes de programación más habituales, PHP también soporta operadores para aumentar o disminuir en el valor 1 los valores numéricos. En este sentido, se puede diferenciar entre el operador de preincremento, el de predecremento, el de postincremento y el de postdecremento.

Operación Operador Resultado
Preincremento ++$numero El operador ++ incrementa el valor de la variable $numero, de forma que el valor aumenta en 1. El resultado será devuelto como el nuevo valor para $numero.
Predecremento --$numero El operador -- disminuye el valor de la variable $numero, de forma que el valor disminuye en 1. El resultado se convertirá en el nuevo valor para $numero.
Postincremento $numero++ Se devuelve el valor actual de $numero y se incrementa el valor en 1.

En el ejemplo del preincremento se demuestran las operaciones aritméticas con operadores de incremento y decremento. El siguiente script en español incrementa el valor de la variable $numero en 1, guarda el valor nuevo en la variable $resultado y emite su valor como string:

<?php
$numero = 0;
$resultado = ++$numero;
echo "Resultado: " . $resultado;
?>

Erhöht man den Wert 0 um 1, erhält man das Ergebnis 1.

Para calcular el predecremento de la variable $number ($numero) se recurre a los mismos scripts, pero cambiando el operador de preincremento I (++) por el operador de decremento (--):

<?php
$numero = 0;
$resultado = --$numero;
echo "Resultado: " . $resultado;
?>

Al reducir el valor 0 de la variable $number ($numero), se obtiene el resultado -1.

El incremento anterior o posterior (pre o post) de un valor puede ponerse de relieve en el siguiente script. Veámoslo con más claridad en la traducción del screenshot en cuestión:

<?php
$x = 0;
echo '<p>Resultado: ' . ++$x;
echo '<br>x tiene el valor ' . $x;
echo '<p>Resultado: ' . $x++;
echo '<br>x tiene el valor ' . $x, '</p>';
?>

En ambos casos se obtiene el mismo resultado. En el preincremento se incrementa el valor x antes de la edición en la línea 3 y en el postincremento esto ocurre en la línea 5.

Las superglobals $_GET y $_POST

Una vez has conocido los fundamentos de PHP y ya te sabes manejar con las variables, puedes concatenarlas y realizar cálculos. En este apartado te contamos por qué las variables son un factor esencial a la hora de programar scripts.

Una función importante de los lenguajes de programación es que estos ofrecen la posibilidad de analizar las entradas de los usuarios y de transferir los valores a otros scripts. Para ello, PHP se basa en las superglobals $_GET y $_POST, variables de sistema predefinidas que están disponibles en todos los ámbitos de validez. Como arrays asociativos (campos de datos), $_GET y $_POST almacenan un conjunto de variables en forma de strings en una variable.

Los arrays pueden imaginarse como si fueran un armario con varios cajones, cada uno de los cuales ofrece la posibilidad de archivar datos. Para poder saber posteriormente lo que alberga cada uno de dichos cajones, estos reciben un nombre de variable, que, en función del tipo de array, se puede tratar de un index o de una key (llave). Mientras que en el caso de los arrays indexados se le otorga a cada cajón un índice en forma de número, a los cajones de un array asociativo se les asigna una key en forma de string (secuencia de caracteres).

Las superglobals $_GET y $_POST contienen una serie de variables en forma de llaves que permiten llegar a los valores vinculados a dichas llaves. Hablaremos en detalle de este tema cuando nos centremos en las superglobals $_GET y $_POST.

Transferencia de datos vía $_GET

La superglobal $_GET representa un array de variables que se transfiere a un script PHP con ayuda de un URL.

Si visitas weblogs, tiendas online o foros de Internet, es posible que te hayan llamado la atención los peculiares URL que aparecen en ellos. Suelen generarse siguiendo el esquema siguiente:

nombredeequipo/carpeta/nombredearchivo.phpvariable

En un weblog, el esquema puede tener la siguiente apariencia:

www.ejemplo-blog.es/index.php

Un URL de este tipo puede desglosarse de manera muy sencilla: en un servidor web con el dominio ejemplo-blog.es existe un archivo con el nombre index.php, que sirve para crear una página web dinámica. Por lo general, este contiene código HTML y PHP, así como enlaces a archivos de plantillas y a hojas de estilo externas, es decir, todo lo necesario para representar una página web. El indicador que delata que se trata de una página web dinámica es el código que sigue al signo de interrogación (?): id=1. Este recibe la denominación de HTTP query string o cadena de consulta de HTTP y está formando por una variable (id) y un valor (1), ambos unidos por el signo igual. Los parámetros URL de este tipo se utilizan, por ejemplo, para generar páginas web dinámicas, para cargar contenidos de las bases de datos o para solicitar la plantilla adecuada.

Las páginas web dinámicas permiten la separación entre contenido y presentación. El elemento index.php contiene prácticamente toda la información sobre la estructura de la página web, pero no alberga los contenidos. Estos se depositan normalmente en una base de datos y se puede acceder a ellos a través de los parámetros en el HTTP query string. En nuestro ejemplo, el URL entrega al index.php el parámetro id=1, el cual determina qué contenidos de la base de datos se tienen que leer y cargarse en el index.php. En el caso de los weblogs se trata, generalmente, del identificador de un artículo determinado. En los foros esto permite visitar una entrada o, en las tiendas online, ver un producto determinado.

Si un URL contiene más de un parámetro, estos se unen entre sí con el símbolo et (&).

www.ejemplo-blog.es/index.php?page=article&id=1

No es necesario recurrir a una base de datos para entender cómo se emplea $_GET en un ejemplo de código. En el siguiente script se utiliza la superglobal $_GET para interpretar los valores de las variables nombre y apellido (forename y surname) de una cadena de consulta HTTP y para escribirlos en las variables PHP $variable1 y $variable2:

<?php
$variable1 = $_GET['forename'];
$variable2 = $_GET['surname'];
echo "Hello " . $variable1 . " " . $variable2 . "!";
?>

Para abrir el script usamos el siguiente URL:

localhost/hello.php?forename=John&surname=Doe

Con ello se entregan los parámetros forename=John y surname=Doe. La emisión de los valores tiene lugar, como hasta ahora, con ayuda de la construcción del lenguaje echo.

La transmisión de datos vía $_GET da lugar inevitablemente a que los datos transferidos se puedan visualizar en la línea de direcciones. En todo momento puede comprobarse cuáles son los parámetros que se van a entregar, lo que tiene la ventaja de que las variables pueden guardarse en hiperenlaces. Además, los usuarios de Internet también tienen la posibilidad de depositar los URL e incluso el query string de HTTP como marcador en el navegador.

El hecho de que el parámetro GET se ejecute en el URL como texto sin codificar, descalifica, sin embargo, a este método para la entrega de datos sensibles como los que albergan los formularios online. Asimismo, el volumen de datos que se puede entregar por medio de la superglobal $_GET está limitado a la longitud máxima de los URL, limitaciones que pueden evitarse con el método POST de HTTP. Los datos transferidos con él se encuentran en la superglobal $_POST.

Transferencia de datos vía $_POST

Mientras que los datos que se transfieren mediante el método GET se entregan como parámetros URL, la transferencia de datos vía $_POST se realiza en el cuerpo de una petición HTTP. Esto permite a los desarrolladores transferir grandes cantidades de datos de un script a otro.

Un campo de aplicación esencial del método HTTP-POST es la transmisión de datos de formularios HTML. Veámoslo con el ejemplo de una suscripción a una newsletter.

Para ello, crea un nuevo archivo PHP con el nombre page1.php e incluye el siguiente bloque de código en español (para ver el código en inglés, consulta el screenshot que aparece a continuación):

<form method="post" action="page2.php" >
Por favor, envía la newsletter a: <br />
Tu nombre: <input type="text" name="nombre" /><br />
Tu apellido: <input type="text" name="apellido" /><br />
Tu correo electrónico: <input type="text" name="email" /><br />
<input type="submit" value="Enviar formulario" />
</form>

En la creación de formularios entra en juego el elemento HTML <form>. Este incluye en la etiqueta de inicio dos atributos: method y action. Con el primero se pueden definir los métodos de transmisión, en este caso el método POST de HTTP. En el atributo action se deposita el URL de un script que recibe todos los datos registrados a través de los siguientes campos de entrada. El ejemplo muestra un formulario HTML con tres elementos de entrada (input type="text") y un botón de envío (input type="submit"). Como receptor de los datos, se define el archivo page2.php.

Para entender la transferencia de datos por medio de $_POST, recurrimos a un script sencillo para el análisis de los datos del formulario que almacena los valores introducidos como variables PHP en formato de texto. Crea para ello un archivo page2.php e inserta el siguiente código de programación:

<?php
$nombre = $_POST["nombre"];
$apellido = $_POST["apellido"];
$email = $_POST["email"]; 
echo "Hola " . $nombre . " " . $apellido . ", <br /> 
Te has registrado con el siguiente correo electrónico: " . $email . ".";
?>

Guarda los dos archivos PHP en la carpeta htdocs de tu servidor de prueba y abre page1.php con el siguiente URL en el navegador web: http:// localhost/ page1.php. El navegador muestra entonces la interfaz web interactiva de tu formulario HTML.

Introduce cualquier dato de registro y haz clic en el botón de enviar para transferir variables de un script a otro. Tan pronto como confirmes los datos en page1.php, se te redirige directamente a page2.php. La ventana del navegador muestra el resultado de la ejecución del script en base a los datos transmitidos.

La page2.php solicita los datos de usuario registrados a través de los campos de entrada de la page1.php por medio del siguiente esquema:

$_POST["Nombre del campo de entrada"]

Así es como la línea $forename = $_POST["forename"] solicita el nombre de pila en el campo de entrada y lo guarda en la variable $forename, que, a su vez, se emite como string gracias a echo.

El constructor if y los operadores de comparación de PHP

Hasta ahora hemos definido las variables, pero también hemos mostrado cómo se transmiten estas de un script a otro y se emiten en forma de strings. A continuación te mostramos cómo se puede vincular la ejecución de los fragmentos de código con unas condiciones determinadas.

El constructor if brinda la posibilidad de escribir scripts de tal manera que las instrucciones surten efecto cuando el usuario cumple una de las condiciones previstas, como puede ser, por ejemplo, la introducción de una contraseña correcta.

Las condiciones se pueden definir en PHP según la siguiente estructura básica:

<?php
if(expression)
   {
   statement;
   }
?>

Esta se lee de la siguiente manera: solo en aquellos casos en los que se cumpla la condición en expression se podrá ejecutar el statement. Una condición se ha cumplido cuando el constructor if da como resultado TRUE (verdadero). De no ser así, este se interpreta como FALSE (falso), en cuyo caso se omitirá la instrucción.

Por regla general, el constructor if comprueba si el valor de una variable se corresponde con lo definido en la condición. Esta estructura de control tiene lugar normalmente en base a los operadores de comparación.

Operadores de comparación

Los operadores de comparación se utilizan a la hora de formular condiciones, con el objetivo de poner dos argumentos en una relación lógica que se puede evaluar como verdadera (TRUE) o falsa (FALSE). Si se emplean los operadores de comparación en las estructuras de control de PHP, estos pueden implementarse con dos variables en la expression de un constructor if:

if ($a == $b) 
   {
   statement;
   }

Expresemos la estructura de control con palabras: las condiciones definidas se llevan a cabo en caso de que la variable $a sea equivalente a la variable $b.

Los operadores de comparación de PHP se basan en el lenguaje de programación C y se diferencian considerablemente de los símbolos matemáticos clásicos en su escritura. En la tabla siguiente te ofrecemos una lista detallada de los mismos:

Operador de comparación Descripción Condiciones
== Igual La condición se cumple si $a y $b muestran el mismo valor.
=== Idéntico La condición se cumple si $a y $b muestran el mismo valor y pertenecen al mismo tipo de datos. Esto se puede visualizar en un ejemplo en el que se compara un íntegro (1) con un string ("1"): 1 == "1" //TRUE 1 === "1" //FALSE. Lo más recomendable es utilizar siempre el operador de comparación === (idéntico) para aquellas condiciones que requieren dos variables.
!= Diferente La condición se cumple si $a y $b tienen valores diferentes.
!== No idéntico La condición se cumple si $a y $b tienen valores que no son iguales o que pertenecen a tipos de datos diferentes.
Menor que La condición se cumple si el valor de $a es menor que el de $b.
Mayor que La condición se cumple si el valor de $a es mayor que el de $b.
<= Menor o igual que La condición se cumple si el valor de $a es menor que el valor de $b o si $a y $b tienen el mismo valor.
>= Mayor o igual que La condición se cumple si el valor de $a es mayor que el valor de $b o si $a y $b tienen el mismo valor.

El siguiente script debe arrojar luz a esta estructura de control, en la que se comparan dos números enteros. El operador de comparación que se utiliza es < (menor que):

<?php
$numero1 = 10;
$numero2 = 20;
if($numero1 < $numero2) { 
    echo "Se cumple la condición";
}

En este caso, se definen las variables $numero1 y $numero2 y se les asignan los valores 10 y 20. A continuación se establece una condición: si $numero1 es menor que $numero2, se emitirá el string mencionado en la condición de echo.

El resultado de la ejecución del script contiene la respuesta: 10 es menor que 20. El constructor if devuelve el resultado TRUE. Tras ello, se puede decir que la condición se ha cumplido (The condition is fulfilled).

Si quieres definir instrucciones que se ejecuten en el caso de que una condición no se cumpla puedes complementar el constructor if con la sentencia else según el esquema siguiente:

<?php
if(condición a)
    {
    instrucción b;
    }
else 
    {
    instrucción c
    }
?>

Este script también comprueba si la condición a devuelve el resultado TRUE o FALSE. Si se cumple la condición a (TRUE) se ejecutará la instrucción b. Si no se cumple la condición a (FALSE), se saltará la instrucción b y, en su lugar, se ejecutará la instrucción c.

A continuación ampliamos nuestro script con el constructor else y cambiamos el operador de comparación < (menor que) por == (igual):

<?php
$numero1 = 10;
$numero2 = 20;
if($numero1 == $numero2) 
    { 
    echo "La condición se cumple";
    }
else 
    {
    echo "La condición no se cumple";
    }
?>

En este caso, el constructor if ofrece como resultado FALSE. El valor de la variable $numero1 no es igual que el valor de la variable $numero2. La condición no se cumple (The condition is not fulfilled). Por lo tanto, no se ejecuta bajo la instrucción if, sino bajo la definida por else.

Atención

si la ejecución de un fragmento de código está sujeta a la igualdad de dos valores, se utiliza el signo igual dos veces (==). Se utiliza un único signo de igualdad (=) en el proceso de adjudicación de valores a variables.

La negación de las condiciones tiene lugar mediante un signo de exclamación (!) dentro de la expression.

<?php
$numero1 = 10;
$numero2 = 20;
if ($numero1 == $numero2) 
    { 
    echo "Los números son iguales.";
    }
if (!($numero1 == $numero2))
    {
    echo "Los números no son iguales.";
    }
?>

El ejemplo muestra la condición $numero1 == $numero2 y su negación. !($numero1 == $numero2) equivale a ($numero1 != $numero2).

Una aplicación práctica de if y else es, por ejemplo, la solicitud de contraseña en un formulario HTML. A continuación, veamos una simulación con ayuda de los ficheros PHP page1.php y page2.php.

Abre el fichero page1.php e introduce el siguiente código de formulario:

<form action="page2.php" method="post">
Por favor, introduce tu contraseña: <input type="password" name="contraseña" />
<input type="submit" value="Enviar" />
</form>

La estructura se corresponde con el formulario ya creado. En este caso solo es necesario un campo de entrada: la solicitud de la contraseña. Como se ha descrito anteriormente, las entradas del usuario se comunican al script page2.php. Este puede adaptarse con el siguiente código de manera que la introducción de la contraseña se compare con una contraseña ya facilitada:

<?php
$contrasena = $_POST["contrasena"];
if($contrasena=="qwertz123")
   {
   echo "La contraseña es correcta";
   }
else
   {
   echo "La contraseña es incorrecta";
   }
?>

El código puede leerse de la siguiente manera: en primer lugar le asignamos un valor a la variable $contrasena en la línea 2, al que se accede a través del método POST de HTTP. A continuación, se define la siguiente estructura de control: el constructor if de la línea 3 debe verificar si el valor de la variable $contrasena coincide con el string qwertz123. En caso de ser así, se obtiene el string The password was correct (La contraseña es correcta). Si el constructor if da como resultado FALSE, entra en juego en la línea 7 el constructor else y se emite el string The password was incorrect (La contraseña es incorrecta).

Se puede acceder al script page1.php a través del URL http:// localhost/ page1.php.

El navegador presenta la vista web del formulario HTML para la solicitud de la contraseña. Aquí se responde a la solicitud, se introduce la contraseña quertz123 definida en el script page2.php y, a continuación, se hace clic en el botón de enviar.

El navegador redirige automáticamente a la page2.php. En un segundo plano, el constructor if compara la contraseña introducida con la guardada y concluye que “qwertz123 == qwertz123 is TRUE”. Seguidamente emite el string The password was correct (La contraseña es correcta).

Comprueba tú mismo lo que ocurre al introducir una contraseña diferente en el campo de entrada.

Operadores lógicos

Las condiciones que se definen con ayuda de los operadores de comparación en la expression del constructor if pueden enlazarse, en caso necesario, con otras condiciones en la misma expression. PHP se basa, para ello, en los operadores lógicos AND y OR.

Operadores lógicos:

Vínculo estrecho Vínculo débil Descripción
&& AND Las dos condiciones vinculadas con el operador deben estar definidas por el valor TRUE.
// OR Una de las condiciones vinculadas por el operador tiene que ser TRUE.

Para enlazar condiciones, PHP cuenta con operadores lógicos que establecen vínculos estrechos o débiles. El hecho de decidirse por una u otra opción no plantea diferencias en la práctica. Si estas se combinan, sin embargo, es fácil darse cuenta que OR y || establecen un vínculo más estrecho que AND y OR. Además, el vínculo creado por AND y && es más estrecho que OR y ||. Esto es comparable con la jerarquía de operadores, tal como se conoce por los operadores matemáticos (por ejemplo, los operadores de multiplicación y división tienen precedencia sobre los de adición y sustracción: * establece un vínculo más estrecho que +).

Un ejemplo práctico de esto es el que ofrece la solicitud de contraseña. Por lo general, los datos de registro se componen de una contraseña secreta y de un nombre de usuario. Solo se podrá llevar a cabo el registro en aquellos casos en los que tanto un dato como el otro coincidan con los facilitados en el sistema.

En este caso, volvemos a abrir el formulario para la solicitud de la contraseña en la page1.php y añadimos un campo de entrada para el nombre de usuario:

<form action="page2.php" method="post">
Nombre de usuario: <input type="text" name="username" /><br />
Contraseña: <input type="password" name="password" /><br />
<input type="submit" value="Enviar" />
</form>

En el paso siguiente hay que adaptar la estructura de control del constructor if. Para ello es necesario recurrir al operador lógico AND y enlazar, así, la condición para la solicitud de la contraseña con una condición para la solicitud del nombre de usuario.

<?php
$username = $_POST["username"];
$password = $_POST["password"];

if($username=="John Doe" AND $password=="qwertz123")
   {
   echo "Bienvenido al área interna " . $username . "!";
   }
else
   {
   echo "Acceso denegado";
   }
?>

El script page2.php recibe los valores para nombre de usuario y contraseña y los almacena en las variables $username y $password. La expression del constructor if contiene dos condiciones que están vinculadas con el operador lógico AND. Solo cuando se hayan cumplido ambas condiciones (username=="John Doe" y $password=="qwertz123"), el constructor if ofrecerá como resultado TRUE.

Debido a que el nombre de usuario se obtiene a través del campo de entrada username, este puede utilizarse directamente para publicar el texto vía echo: a Welcome to the internal área (Bienvenido al área interna) le sigue el valor de la variable $username. Si no se cumple una de las dos condiciones, se recibirá el texto Access denied (Acceso denegado).

Los operadores lógicos pueden combinarse libremente. En este sentido se puede considerar que AND tiene una jerarquía de operadores superior a OR. Del mismo modo que ocurre con las ecuaciones matemáticas, en PHP también se pueden utilizar paréntesis para influir en la jerarquía.

Bucles (while, for)

A veces es necesario que un script recorra un determinado segmento de código varias veces antes de que se ejecute el resto del código del programa. Para ello, los lenguajes de programación utilizan el concepto de bucle. Aquí se pueden diferenciar tres tipos:

  • bucles while
  • bucles do-while
  • bucles for

Bucles while

Los bucles while son los bucles más sencillos de PHP. Su estructura base obedece al siguiente esquema:

while (condición)
    {
    Paso del bucle y otras instrucciones
    }

Los bucles while instan a PHP a ejecutar instrucciones subordinadas en tanto que la condición while se cumpla. Para ello, el intérprete de PHP comprueba la condición al principio de cada vuelta del bucle. La ejecución del código subordinado se para cuando la condición while ya no se cumple.

Se puede visualizar este principio con un sencillo script con números. A continuación, la versión en español:

<?php
$numero = 1;
while ($numero <= 10) {
    echo $numero++ . "<br />";  
    }
  ?>

En el apartado “Realización de cálculos con variables” anterior ya se introdujo el principio del incremento. En el siguiente script recurrimos a dicho principio, pero utilizamos un operador de postincremento para aumentar en 1 el valor del integer de la variable $number ($numero) cada vez que el bucle dé una vuelta tras la publicación del texto vía echo. Como condición para el bucle while definimos que $number sea menor/igual a 10. La instrucción echo se repetirá tantas veces como sea necesario para que $number reciba un valor superior a 10.

El resultado de la ejecución del script es un string que, cada vez que el bucle da una vuelta, emite el valor de la variable $number antes de que este se incremente. El script cuenta de 1 a 10 y finaliza la ejecución del código en cuanto no se cumple la condición while.

Bucles do-while

La construcción de los bucles do-while se asemeja a la de los bucles while. La diferencia solo radica en que la condición no se comprueba al principio de cada vuelta del bucle, sino al final. El esquema básico de un bucle do-while se corresponde con el siguiente ejemplo:

do {
    Paso del bucle y otras instrucciones
    } 
   while (Condición)

Cuando se programa un bucle do-while, el script resultante tiene el siguiente aspecto:

<?php
$numero = 1;
do {
    echo $numero++ . "<br />";
    }
while ($numero <= 10); 
  ?>

En este caso, el resultado es el mismo. Lo peculiar en el bucle do-while es que este se ejecuta al menos una vez, aun cuando la condición no se cumpla en ninguna ejecución del bucle.

Bucles for

Básicamente, los bucles for tienen la misma funcionalidad en un script de PHP que los bucles while. A diferencia de estos, sin embargo, el valor inicial, la condición y la instrucción se anotarán dentro de una línea y no se distribuirán a lo largo de tres o más líneas.

La estructura base del bucle for tiene el siguiente esquema: 

for (valor inicial; condición; paso del bucle)

   instrucciones

Este ejemplo en español puede entenderse como bucle for en forma compacta:

<?php
for($numero = 1; $numero <= 10; $numero++) {
   echo $numero . "<br /> ";
}
?>

En primer lugar, se define el valor 1 para la variable $numero. Posteriormente, PHP comprueba si se cumple la condición $numero <= 10. Si es correcto, el bucle continúa y se ejecutan las instrucciones por debajo del bucle (en este caso, la instrucción echo). Solo entonces se ejecuta el bucle, en cuyo caso no tiene importancia si se ha optado por el preincremento o por el postincremento, puesto que esta instrucción se realiza con anterioridad a la emisión. Si el paso del bucle ha concluido, dará comienzo la siguiente vuelta.

El valor inicial, la condición o el paso del bucle son elementos opcionales de un bucle for. En teoría, son posibles incluso los bucles vacíos, aunque serían redundantes.

Básicamente, tomar una decisión acerca de si los scripts PHP deben incluir bucles for o while depende de cada uno. Existe, sin embargo, un argumento que demuestra que los bucles for ganan la partida: si se aplican bucles for, se pueden controlar mejor los datos fundamentales del bucle. Esto contribuye a prevenir el peligro de escribir un bucle que funcione hasta que la memoria del intérprete esté llena. Esto ocurre en referencia al ejemplo mencionado si se olvida incrementar el valor de la variable $numero.

En caso de que el bucle tenga que funcionar al menos una vez independientemente de la condición, el bucle do-while es el bucle que habría que elegir.

break y continue

Se puede influir en el transcurso de un bucle while-, do-while o for por medio de las instrucciones break y continue. Se usa break para interrumpir el transcurso de un bucle en cualquier lugar y continue para omitir una vuelta del bucle. Tanto una instrucción como la otra están conectadas a una condición por medio del constructor if. En el ejemplo siguiente, tanto el original como la traducción muestran un script numérico con un break:

<?php
for ($numero = 1; $numero <= 10; $numero++) {
    if ($numero== 5) {
      echo "El script se para al llegar a 5";
      break;
    }
echo $numero . "<br /> ";
}
?>

En el bucle for hemos definido que el valor de la variable $numero ($number) se incremente en 1 en cada vuelta hasta que la variable haya alcanzado el valor 10. Ahora, con la instrucción break, el bucle se puede interrumpir con anticipación en cuanto $numero ($number) haya alcanzado el valor 5. El constructor echo solo ofrece los números comprendidos entre el 1 y el 4.

Para omitir la edición de la quinta vuelta, pero no interrumpir para ello todo el transcurso del bucle, se reemplaza la instrucción break por continue:

<?php
for ($numero=1; $numero <= 10; $numero++) {
    if ($numero == 5) {
      echo "¡Se omite la 5!<br />";
      continue;
    }
echo $numero . "<br /> ";
}
?>

En lugar del número 5, PHP ofrece el string textual definido bajo if ¡Se omite la 5! (We skip number 5!).

Operaciones con archivos

Las páginas web dinámicas se basan en la separación entre contenido y presentación, de ahí que los lenguajes de programación como PHP ofrezcan diferentes funcionalidades que permiten cargar contenidos de fuentes de datos externas en archivos de plantillas centrales. En la práctica, estas fuentes de datos son bases de datos que se administran con ayuda de sistemas de gestión de contenidos como MySQL. Para saber cómo funciona, visita nuestro tutorial de MySQL para principiantes.

Además, existe la posibilidad de integrar datos procedentes de archivos. A continuación te mostramos cómo se pueden leer archivos como string en un script PHP y cómo se pueden guardar los textos de tus scripts en archivos.

Lectura de archivos

Para leer el contenido de un archivo, PHP ofrece diferentes funciones, de las cuales file() y file_get_contents() son las más apropiadas para nuestros objetivos. Mientras que la función file_get_contents() sirve para leer la totalidad del contenido de un archivo en un string, la función file() guarda el contenido en forma de array. Cada elemento del array se corresponde con una línea del archivo. Mediante file() es más sencillo emitir cada línea por separado.

A continuación, demostramos las operaciones con archivos PHP con el archivo example.txt que alojamos en el directorio htdocs de nuestro servidor de prueba. El contenido del archivo lo componen cuatro líneas del texto “Lorem ipsum”:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit.

Aenean commodo ligula eget dolor. Aenean massa.

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.

El primer paso consiste en leer todo el archivo como string. Para ello hay que asignarle a la función file_get_contents() el nombre del archivo correspondiente como parámetro. Esto tiene lugar en función del esquema siguiente:

file_get_contents('example.txt')

Ahora ya podemos trabajar con este string ya leído, al que podemos, por ejemplo, asignar una variable y emitirla como texto en el navegador web:

<?php
$example = file_get_contents('example.txt');
echo $example;
?>

En la vista del navegador se puede ver el texto devuelto sin párrafos. Los saltos de línea del archivo original no se pueden visualizar, lo que guarda relación con el hecho de que el navegador web interpreta el texto del script como código HTML, por lo que se pierden los ajustes que se definen en los editores de texto.

Si quieres mantener la estructura original, puedes recurrir a diferentes posibilidades. Puedes añadir manualmente la codificación HTML para el salto de línea (br) en el archivo de origen, etiquetar con <pre> el contenido del archivo y asignar la propiedad CSS white-space: pre-wrap a esta sección o puedes utilizar la función nl2br() para indicar a PHP que los saltos de línea (new lines) deben transformarse automáticamente en saltos de línea en HTML (breaks). Se ha de utilizar la función siguiendo el siguiente esquema:

<?php
$example = file_get_contents('example.txt');
echo nl2br($example);
?>

Si se emplea el constructor del lenguaje echo en combinación con nl2br(), PHP inserta un salto de línea en HTML antes de cada línea.

Para que las líneas de un archivo se visualicen por separado, puedes recurrir a la función file(), la cual lee el archivo, numera todas las líneas que comienzan por 0 y guarda sus contenidos como elementos de un array. Trasladado a nuestro ejemplo, se obtiene la siguiente clasificación:

[0] = Lorem ipsum dolor sit amet, consectetuer adipiscing elit.

[1] = Aenean commodo ligula eget dolor. Aenean massa.

[2] = Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

[3] = Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.

Para emitir el contenido correspondiente mediante el constructor del lenguaje echo, es necesario indicar el número de línea deseado. Así, el siguiente script de ejemplo entrega al navegador la primera línea del archivo example.txt:

<?php
$example = file("example.txt");
echo $example [0];
?>

Escritura de archivos

Con PHP no solo se pueden leer archivos, sino que el lenguaje de programación también da la posibilidad de crearlos y de describirlos con contenidos.

Para ello, se utiliza la función de PHP file_put_contents(), que espera dos parámetros: el nombre del archivo que se tiene que crear o actualizar y los datos en forma de string o array.

El siguiente script crea el fichero test.txt y escribe el string This is a test! (¡Esto es un test!) en la primera línea. El suplemento \r\n da lugar a un salto de línea en el archivo de destino. Veámoslo:

<?php
file_put_contents("test.txt", "This is a test! \r\n");
echo "test.txt was created!";
?> 

Puesto que la función file_put_contents no entrega emisión alguna para el navegador, añadimos una instrucción echo que nos indica cuál es la acción que se va a llevar a cabo.

Si la carpeta de destino ya contiene un archivo con el mismo nombre, este se sobrescribirá, lo que se evita determinando el parámetro FILE_APPEND. Veamos la traducción de la captura de pantalla correspondiente al español:

<?php
file_put_contents("test.txt","The test was successful! \r\n", FILE_APPEND);
echo "test.txt was updated!";
?> 

Si se utiliza file_put_contents() con el parámetro FILE_APPEND, se agregarán nuevos contenidos a los ya existentes.

Lo que PHP escribe en el archivo de destino no tiene por qué ir definido obligatoriamente en el script. Como alternativa también existe la posibilidad de transmitir los contenidos de un archivo a otro. El siguiente script lee el contenido del fichero example.txt y lo inserta en el fichero test.txt:

<?php
$example= file_get_contents("example.txt");
file_put_contents("test.txt", $example, FILE_APPEND);
echo "test.txt was updated!";
?>

Tutoriales PHP Código Abierto