Como en todo lenguaje de programación, en ocasiones necesitaremos tomar decisiones lógicas para realizar diferentes acciones en función del resultado.

PHP pone a nuestra disposiciones diferentes instrucciones y operadores para alterar el flujo del programa, vamos a ver el uso de condicionales.

A lo largo de nuestra vida hemos tenido que tomar miles de decisiones condicionadas por cosas ajenas a nosotros, imaginemos que vamos a salir a comprar y al llegar a la puerta vemos que esta lloviendo, en ese momento cogemos un paraguas y lo usamos, para tomar esta decisión inconscientemente teníamos pensado algo así como “Si llueve uso el paraguas, si no llueve lo dejo en casa”. EL uso de condicionales en programación es muy similar a este razonamiento lógico que hacemos, el mismo ejemplo se podría traducir a PHP. Para ello haremos uso de las sentencias if – else:

<?php

//Definimos $llueve como true o false según queramos.
$llueve = true;

//Esto seria “Si llueve es igual a verdadero”
if ($llueve == true){

    echo “Usamos el paraguas”;

//En caso contrario, si llueve es igual a falso
}else{

    echo “No es necesario el paraguas”;

}

?>

Como se puede observar su uso es bastante sencillo, usamos la sentencia IF para formular una pregunta, que en caso de que su respuesta sea afirmativa se ejecutara el código incluido entre las llaves { } siguientes, en caso de que la respuesta sea negativa se ejecutara el código contenido entre las llaves después del else.

Si analizamos detenidamente la sentencia completa del if en el ejemplo vemos el uso de un nuevo operador, este operador se puede clasificar como un operador de comparación, estos operadores siempre darán como resultado TRUE si se cumplen, o FALSE si no se cumple, contamos con los siguientes operadores de comparación:

Operador Nombre Devuelve TRUE
$a == $b Es Igual Si son iguales
$a <= $b Es Menor o igual Si $a es menor o igual que $b
$a >= $b Es Mayor o igual Si $a es mayor o igual que $b
$a != $b Es Diferente Si son diferentes
$a < $b Es Menor Si $a es menor que $b
$a > $b Es Mayor Si $a es mayor que $b
$a <> $b Es Diferente Si son diferentes
$a === $b Es Idéntico Si son iguales y del mismo tipo
$a !== $b No son Idénticos Si son diferentes o de otro tipo

Tenemos una amplia variedad donde elegir, de esta forma siempre encontraremos el operador que mejor se adapte a ‘nuestra pregunta‘, veamos el ejemplo anterior en las diferentes variantes que estos operadores nos permiten:

<?php

//Definimos $llueve como true o false según queramos.
$llueve = true;

if ($llueve == true){ //Resultado TRUE

    echo “Usamos el paraguas”;

}

if ($llueve === true){ //Resultado TRUE 

    echo “Usamos el paraguas”;

}

if ($llueve != true){ //Resultado FALSE

    echo “Usamos el paraguas”;

}else{

    echo “No necesitamos paraguas”;

}

if ($llueve !== true){ //Resultado FALSE

    echo “Usamos el paraguas”;

}else{

    echo “No necesitamos paraguas”;

}

if ($llueve <> true){ //Resultado FALSE

    echo “Usamos el paraguas”;

}else{

    echo “No necesitamos paraguas”;

}

?>

La forma en la que formulamos la pregunta determina el resultado obtenido, por lo tanto es decisión del programador formular la pregunta teniendo en cuenta los posibles resultados para estructurar adecuadamente el código.

Como se puede ver en el ejemplo anterior hemos usado todos los operadores de comparación exceptuando los operadores numéricos como mayor que, menor que, etc.

Supongamos que tenemos un envase de agua con capacidad para 10 vasos, vamos contando los vasos que vertemos en el envase y debemos de para al llegar a 10 para evitar poner de mas, ¿Como podríamos controlar esto mediante un programa? Veamos una posible solución:

<?php

$vasos = 0;

//Preguntamos si el numero de vasos
//vertidos es menor a 10
if ($vasos < 10) {

    //Sumamos un vaso
    $vasos++;

    echo “Este es el vaso numero “ . $vasos;

}else{

    echo “El envase se ha llenado”;

}

?>

¿Porque uso el operador ‘menor que‘ y no el ‘menor o igual que‘? Debemos de fijarnos que en el ejemplo la variable $vasos vale 0 de entrada, por lo tanto empezamos a sumar 1 vaso desde 0, si usáramos ‘menor o igual que‘ cuando $vasos tuviera un valor de 10 volveríamos a verter otro vaso, siendo en total 11 vasos los vertidos y superando el limite impuesto, por lo tanto si queremos usar este operador, $vasos debería de valer 1 al iniciarse, no se si esta parte se entiende con claridad pero es muy fácil de representar:

<?php

//Ahora vasos vale 1 en vez de 0
$vasos = 1;

//Preguntamos si el numero de vasos
//vertidos es menor o igual a 10
if ($vasos <= 10) {

    //Sumamos un vaso
    echo “Este es el vaso numero “ . $vasos;

    $vasos++;

}else{

    echo “El envase se ha llenado”;

}

?>

Los operadores de comparación nos permiten comparar strings, enteros, booleanos, etc..

<?php

$a = 'zz' == 'zz'; //Devuelve TRUE
$a = 'zz' != 'zz'; //Devuelve FALSE
$a = true == true; //Devuelve TRUE
$a = true != true; //Devuelve FALSE
$a = 1 == 2; //Devuelve FALSE
$a = 1 != 2; //Devuelve TRUE

?>

Pero lo mas interesante es que los operadores ‘menor que‘, ‘mayor que‘, ‘menor o igual que‘ y ‘mayor o igual‘ que, nos permiten comparar strings según su orden en la tabla ASCII, de esta forma podemos ordenar cadenas de texto usando condicionales:

<?php

if ('a' < 'z') { 

    echo “Es correcto”; 

}else{

    echo “Es incorrecto”;

}

?>

Como siempre digo la imaginación es nuestra mayor virtud a la hora de programar, seguro que en algún momento encuentras una situaciones en la que sacarle partido a esto.

Ahora que comprendemos los operadores de comparación vamos a complicarlo un poco, volvamos al ejemplo de la lluvia, ya tenemos definido que al llover usamos el paraguas, pero ¿y si hace mucho calor?, en ese caso nos gustaría salir en pantalón corto, ¿y si nieva? ¿No deberíamos de llevar mas abrigo?, para esto usamos la combinación de sentencias if – elseif, vendría a significar que si no se cumple el primer condicional compruebe el segundo, si no se cumple el segundo pase al siguiente y así hasta que se cumpla alguno, salte algún else, o se acabe la sentencia:

<?php

//Definimos tiempo como 'calor', 'nieva', o 'llueve'
$tiempo = 'calor';

if ($tiempo == 'llueve') {

    echo “Esta lloviendo, cojo el paraguas”;

}elseif ($tiempo == 'nieva') {

    echo “Esta nevando, he de abrigarme”;

}elseif ($tiempo == 'calor') {

    echo “Hace calor, me encanta canarias!”;

}else{

    echo “No se cumple ninguna condición climatológica”;

}

?>

En este ejemplo se comprueba si $tiempo coincide con alguno de los condicionales, saltándose los que no se cumplan hasta que $tiempo es igual acalor‘ y ejecutando el bloque de código contenido en sus llaves, así definimos diferentes acciones para diferentes eventos. Este mismo ejemplo se puede representar de una forma mas simple con otra sentencia condicional, switch. Usamos switch cuando la variable o dato a comparar es siempre el mismo, por lo tanto como en el ejemplo anterior siempre comparamos $tiempo podemos representarlo así:

<?php

$tiempo = 'nieva';

switch ($tiempo){

    //Comparamos con 'llueve'
    case 'llueve':

        echo “Esta lloviendo, cojo el paraguas”;

    break;

    //Comparamos con 'llueve'
    case 'nieva':

        echo “Esta nevando, he de abrigarme”;

    break;

    //Comparamos con 'llueve'
    case 'calor':

        echo “Hace calor, me encanta canarias!”;

    break;

    //El default equivaldría al else, puesto que se ejecutara siempre y cuando no se cumpla ninguna de las anteriores.

    default:

        echo “No se cumple ninguna condición climatológica”;

    break; 

}

?>

La instrucción switch hace uso de pequeños bloques de código dentro de case y break, la sentencia case vendría a ser muy parecida a la sentencia if o elseif teniendo en cuenta de que la comparación es siempre con la variable dada al abrir el switch, en caso de que ninguna comparación se cumpla se ejecuta el código contenido entre default y break.

Normalmente se da el caso de que necesitamos comprobar que se cumplen más de una condición, para ello podemos anidar varios if dentro de otros, pero dependiendo del caso no suele ser la mejor solución, para hacer esto contamos con otro tipo de operadores, los operadores lógicos:

Operador Nombre Devuelve TRUE
$a && $b Y Si $a y $b son true
$a || $b O Si $a o $b son true
! $a No Si $a no es true
$a and $b Y Si $a y $b son true
$a or $b O Si $a o $b son true
$a xor $b O (Exclusivo) Si $a o $b son true, pero no ambos!

Estos operadores nos hacen la vida mas facil a la hora de comprobar varios condicionantes:

<?php

$a = true;
$b = true;

//Anidando if
if ($a == true) {

    if ($b == true) {

        echo “Correcto”; 

    }

}

//Usando operadores lógicos
if (($a == true)&&($b == true)){

    echo “Correcto”;

}

?>

Al usar los operadores lógicos no solo hemos evitado sentencias de más, sino que se entiende mejor el código, para terminar debemos de saber que aunque yo en los ejemplo comparo siempre las variables con true, es solo para que sea mas legible y fácil de comprender, puesto que no es necesario hacer comparaciones con true, si una variable u operación tiene un valor diferente a false lo podemos comprobar simplemente así:

<?php

$variable = true;

//Esto equivale a $variable == true
if ($variable) {

    echo “Correcto”;

}

?>

Puede que me me halla extendido un poco, pero el uso de los condicionales es sumamente importante a la hora de programar cualquier aplicación, se puede decir que no existe ningún programa sin el uso de condicionales ya que son parte fundamental de la programación.

En el siguiente articulo hablare sobre los diferentes bucles que podemos usar en PHP y tratare de dar ideas de uso para cada uno de ellos. Si tienes alguna duda al respecto de la guía o crees que necesitas ayuda con algo de php puedes dejar un comentario o contactarme via twitter.