La flexibilidad del código del lenguaje PHP se consigue cuando se pueden introducir decisiones y bucles.
Una decisión permite ejecutar un apartado u otro del código, basado en los resultados de una prueba específica.
Por su parte, el bucle permite ejecutar el mismo apartado de código una y otra vez hasta que se cumpla una condición específica.
El uso de estos elementos agrega mucha potencia a los guiones y se pueden hacer verdaderamente dinámicos, al contrario de aquellos con ejecución secuencial, donde el motor PHP comienza en la primera línea del guión y continúa hacia abajo hasta que llega al final.
Para poder incluir estas decisiones y bucles en el código existen las estructuras de control que se pueden clasificar en dos grupos principales:
Una decisión permite ejecutar un apartado u otro del código, basado en los resultados de una prueba específica.
Por su parte, el bucle permite ejecutar el mismo apartado de código una y otra vez hasta que se cumpla una condición específica.
El uso de estos elementos agrega mucha potencia a los guiones y se pueden hacer verdaderamente dinámicos, al contrario de aquellos con ejecución secuencial, donde el motor PHP comienza en la primera línea del guión y continúa hacia abajo hasta que llega al final.
Para poder incluir estas decisiones y bucles en el código existen las estructuras de control que se pueden clasificar en dos grupos principales:
- Sentencias condicionales: Aquellas sentencias que ejecutan una sección del código del programa si se cumple una condición.
- Sentencias de control de bucles: Aquellas sentencias que definen bucles que encierran grupos de instrucciones que se ejecutan repetidamente hasta que se cumpla cierta condición. También reciben el nombre de "repetitivas".
PHP posee las siguientes sentencias condicionales: if, else, elseif, switch.
SENTENCIA IF
Esta sentencia se emplea para realizar la evaluación de una expresión. Esta expresión se evalúa a su valor condicional (booleano). Así, esta evaluación sólamente puede tener dos resultados posibles:
if (expresión) {
sentencia1;
. . .
sentenciaN;
}
En el caso particular de que el código que se deba ejecutar cuando se cumpla la condición del if esté compuesto por una única sentencia, en la sintaxis mostrada se podrá ahorrar el uso de las llaves.
Las sentencias if pueden anidarse indefinidamente dentro de otras sentencias if, lo que proporciona una flexibilidad completa para ejecuciones condicionales en las diferentes partes del programa.
La sentencia else se emplea cuando se ejecuta una sentencia si se cumple una cierta condición, y una sentencia distinta si la condición no se cumple.
Esta sentencia no se puede utilizar sola, siempre debe formar parte de una sentencia if. La sentencia else complementa a la sentencia if para definir una instrucción o grupo, o bloque, de instruciones que se ejecutará si y sólo si la evaluación resultase falsa.
La sintaxis del if incluyendo else es:
if (expresión) {
sentencia1;
. . .
sentenciaN;
} else {
sentencia1;
. . .
sentenciaN;
}
La sentencia else se ejecutará sólamente si la expresión if se evalúa como FALSO.
Si la sentencia if se evalúa como verdadera se ejecutará su instrución o grupo, o bloque, de instruciones y la sentencia elseif (una o varias) no intervienen en absoluto, así como tampoco la sentencia else. La sentencia elseif se evalúa solo se la evaluación de la sentencia if resultase falsa. Como puede haber máis de una sentencia elseif, estas se evalúan ordenadamente, pero si cualquiera se evalúa como verdadera, el resto ya no se tendría en cuenta.
Al final de las sentencias elseif, que también se pueden escribir else if, se puede incluir opcionalmente la sentencia else, que se ejecutará sólamente si todas las sentencias elseif y, obviamente la sentencia if inicial, resultaran ser falsas.
La sintaxis de la sentencia elseif es similar a la de la sentencia if, puesto que debe incluir una expresión.
if (expresión) {
sentencia1;
. . .
sentenciaN;
} elseif (expresión) {
sentencia1;
. . .
sentenciaN;
} [else {
sentenza1;
. . .
sentenciaN;
}]
Esta sentencia evalúa una variable o una expresión y luego en una o varias sentencias casi se compara esa variable o el resultado de esa expresión con distintos valores.
La sintaxis de esta sentencia es:
switch (expresión) {
case valor: {
sentencia1;
. . .
sentenciaN;
[break;]
}
. . .
[default: {
sentencia1;
. . .
sentenciaN;
}]
}
Se debe tener en cuenta que las llaves que van en los apartados del case son optativas; además, la estructura switch también permite usar cadenas de texto como valores del case.
Se debe entender cómo se ejecuta la sentencia switch para evitar errores. Esta sentencia ejecuta línea por línea (realmente, sentencia a sentencia). Al principio, no se ejecuta código. Solo cuando se encuentra una sentencia case con un valor que coincide con el valor de la expresión switch PHP comienza a ejecutar las sentencias, continúando con la ejecución de las mismas hasta el final del bloque switch, o hasta la primera vez que vea una sentencia break. Si no se escribe una sentencia break al final de una lista de sentencias case, PHP seguirá ejecutando las sentencias del siguiente case.
En una sentencia de este tipo, la condición se evalúa solo una vez y el resultado se compara con cada sentencia case. En una sentencia elseif, la condición se evalúa otra vez. Si a condición es más compleja que la de una comparación simple y/o está en un bucle estrecho, un switch puede ser máis rápido.
Por otra parte, la lista de sentencias de un case también puede estar vacía, lo cual simplemente pasa el control a la lista de sentencias del siguiente case.
Un caso especial es el default, que coincide con cualquier cosa que no corresponda con los otros casos.
Además, se puede utilizar un punto y coma en lugar de dos puntos después de un caso, aunque cualquier salida (incluyendo espacios en blanco) entre una sentencia switch y el primer case resultará en un error de sintaxis.
En la estructura switch pueden meterse todo tipo de condiciones, desde las que son más exactas, ya sean numéricas, ya cadenas de texto, hasta condiciones más abiertas.
Pueden verse ejemplos de este tipo de estructuras de control en la siguiente entrada.
Espero que esta entrada haya sido interesante y/o útil al lector. En caso afirmativo, aguardo que la comparta y/o la comente, por favor.
- Verdadero: Si el resultado de la evaluación es verdadero, se ejecutará el grupo de instrucciones que sigue a continuación. Puede ser una instrucción o un grupo de ellas cerradas entre llaves.
- Falso: En este caso se ignorará.
if (expresión) {
sentencia1;
. . .
sentenciaN;
}
En el caso particular de que el código que se deba ejecutar cuando se cumpla la condición del if esté compuesto por una única sentencia, en la sintaxis mostrada se podrá ahorrar el uso de las llaves.
Las sentencias if pueden anidarse indefinidamente dentro de otras sentencias if, lo que proporciona una flexibilidad completa para ejecuciones condicionales en las diferentes partes del programa.
SENTENCIA ELSE
Esta sentencia no se puede utilizar sola, siempre debe formar parte de una sentencia if. La sentencia else complementa a la sentencia if para definir una instrucción o grupo, o bloque, de instruciones que se ejecutará si y sólo si la evaluación resultase falsa.
La sintaxis del if incluyendo else es:
if (expresión) {
sentencia1;
. . .
sentenciaN;
} else {
sentencia1;
. . .
sentenciaN;
}
La sentencia else se ejecutará sólamente si la expresión if se evalúa como FALSO.
SENTENCIA ELSEIF / ELSE IF
Esta sentencia, tal como sucede con la sentenza anterior, tampoco se puede utilizar sola, siempre debe formar parte de una sentencia if. La sentencia elseif complementa a la sentencia if para definir otras evaluaciones adicionales (la sentencia else no puede incluir una expresión de evaluación).Si la sentencia if se evalúa como verdadera se ejecutará su instrución o grupo, o bloque, de instruciones y la sentencia elseif (una o varias) no intervienen en absoluto, así como tampoco la sentencia else. La sentencia elseif se evalúa solo se la evaluación de la sentencia if resultase falsa. Como puede haber máis de una sentencia elseif, estas se evalúan ordenadamente, pero si cualquiera se evalúa como verdadera, el resto ya no se tendría en cuenta.
Al final de las sentencias elseif, que también se pueden escribir else if, se puede incluir opcionalmente la sentencia else, que se ejecutará sólamente si todas las sentencias elseif y, obviamente la sentencia if inicial, resultaran ser falsas.
La sintaxis de la sentencia elseif es similar a la de la sentencia if, puesto que debe incluir una expresión.
if (expresión) {
sentencia1;
. . .
sentenciaN;
} elseif (expresión) {
sentencia1;
. . .
sentenciaN;
} [else {
sentenza1;
. . .
sentenciaN;
}]
SENTENCIA SWITCH
La sentencia switch es similar a una serie de sentencias if en la misma expresión. En muchas ocasiones, se quiere comparar la misma variable (o expresión) con muchos valores diferentes, y ejecutar una parte de código distinta dependiendo de a qué valor es igual.Esta sentencia evalúa una variable o una expresión y luego en una o varias sentencias casi se compara esa variable o el resultado de esa expresión con distintos valores.
La sintaxis de esta sentencia es:
switch (expresión) {
case valor: {
sentencia1;
. . .
sentenciaN;
[break;]
}
. . .
[default: {
sentencia1;
. . .
sentenciaN;
}]
}
Se debe tener en cuenta que las llaves que van en los apartados del case son optativas; además, la estructura switch también permite usar cadenas de texto como valores del case.
Se debe entender cómo se ejecuta la sentencia switch para evitar errores. Esta sentencia ejecuta línea por línea (realmente, sentencia a sentencia). Al principio, no se ejecuta código. Solo cuando se encuentra una sentencia case con un valor que coincide con el valor de la expresión switch PHP comienza a ejecutar las sentencias, continúando con la ejecución de las mismas hasta el final del bloque switch, o hasta la primera vez que vea una sentencia break. Si no se escribe una sentencia break al final de una lista de sentencias case, PHP seguirá ejecutando las sentencias del siguiente case.
En una sentencia de este tipo, la condición se evalúa solo una vez y el resultado se compara con cada sentencia case. En una sentencia elseif, la condición se evalúa otra vez. Si a condición es más compleja que la de una comparación simple y/o está en un bucle estrecho, un switch puede ser máis rápido.
Por otra parte, la lista de sentencias de un case también puede estar vacía, lo cual simplemente pasa el control a la lista de sentencias del siguiente case.
Un caso especial es el default, que coincide con cualquier cosa que no corresponda con los otros casos.
Además, se puede utilizar un punto y coma en lugar de dos puntos después de un caso, aunque cualquier salida (incluyendo espacios en blanco) entre una sentencia switch y el primer case resultará en un error de sintaxis.
En la estructura switch pueden meterse todo tipo de condiciones, desde las que son más exactas, ya sean numéricas, ya cadenas de texto, hasta condiciones más abiertas.
Pueden verse ejemplos de este tipo de estructuras de control en la siguiente entrada.
Espero que esta entrada haya sido interesante y/o útil al lector. En caso afirmativo, aguardo que la comparta y/o la comente, por favor.
No hay comentarios:
Publicar un comentario
Deje aquí su comentario, si no puede comentar, pruebe a hacerlo desde otro navegador de red u otro equipo.