Aprendiendo PHP, parte 8: Condicionales

En todos los lenguajes de programación existe algo llamado condicionales, estos permite controlar el flujo de nuestra aplicación, lo que significa que el comportamiento del mismo dependerá de determinadas condiciones.

Vamos a transportar esto a un ejemplo de la vida real. Supongamos que hay una película que es apta mayores de 16 años, por tanto las personas podrán ingresar a la sala a ver la película si cumplen con una condición: ser mayores de 16 años. Si la persona cumple con esa condición podrá ingresar a ver la película, sino tendrá que irse.

if else

El condicional más utilizado es el if (si) else (sino). La sintaxis es muy sencilla:

<?php 
   if($condicion){
      //Ejecutará esto cuando la condición se cumpla.
   }else{
      //Ejecutará esto cuando la condición NO se cumpla.
   } 
?>

Esto está formado por tres partes. La primera es la condición, si la misma se cumple entrará por el lado verdadero, sino por el lado falso, osea no se cumple la condición. Tanto si se cumple o no, el código que se ejecutará debe estar dentro de llaves.

Por ejemplo lo que acabamos de decir:

<?php
   $mayor_de_edad = true;
   if($mayor_de_edad){
      echo 'Usted puede ver la película';
   }else{
      echo 'Usted NO puede ver la película';
   } 
?>

En este caso, se ejecutará el lado verdadero, donde imprime por pantalla: ‘Usted puede ver la película’, ya que el valor de $mayor_de_edad es true. Podés probar cambiando esta variable a false, para comprobar que sale por el otro lado.

También podemos omitir la parte del else:

<?php
   $mayor_de_edad = true;
   if($mayor_de_edad){
      echo 'Usted puede ver la película';
   }
?>

Operador de Negación

También podemos preguntar al revés, osea en lugar de si se cumple la condición, si la misma no se cumple, esto mediante el operador de negación (!):

<?php
   $mayor_de_edad = true;
   if(!$mayor_de_edad){
      echo 'Usted NO puede ver la película';
   }else{ 
      echo 'Usted puede ver la película';
   } 
?>

Operadores And y Or

El if tiene la capacidad de analizar si se cumple una condición, o bien, una condición formada por más de una, por tanto, podemos preguntar por ejemplo que se cumplan dos condiciones mediante el operador and:

<?php
   $bateria_cargada1 = true;
   $bateria_cargada2 = true;
   if($bateria_cargada1 and $bateria_cargada2){
      echo 'El control funciona correctamente.';
   }else{
      echo 'El control no funciona debido a que una o ambas baterías no están cargadas';
   }
?>

En este caso el condicional preguntará si tanto $bateria_cargada1$bateria_cargada2 son true, en ese caso se cumplirá la condición, pero en caso contrario, osea que una o ambas variables sean false, la condición no se cumplirá.

El operador or, en cambio, evaluará que al menos una de las condiciones se cumpla

<?php
   $conexion1 = false;
   $conexion2 = true;
   if($conexion1 or $conexion2){
      echo 'Sistema conectado correctamente';
   }else{
      echo 'El sistema no puede conectarse debido a que ninguna de las conexiones están funcionando';
   }
?>

En este último caso la condición se cumplirá si una de las dos variables, $conexion1 o $conexion2, son true, sólo si ambas son false no se cumplirá.

Operadores Igual o Diferente

También podemos evaluar que dos valores sean iguales o no lo sean, por ejemplo:

<?php
   $nombre = 'Fernando';
   if($nombre == 'Fernando'){
      echo 'Bienvenido Fernando.';
   }else{
      echo 'Bienvenido anónimo.';
   }
?>

En esta caso, la condición es que la variable $nombre tenga el valor de ‘Fernando’, si el valor es ése entonces la condición se cumplirá, pero si es otro nombre, por ejemplo ‘Juan’, entonces se ejecutará la otra parte, la del else.

Ojo, no hay que confundir el =(igual) con ==(igual igual), = se utiliza para asignar un valor a una variable, mientras que == es un operador que evaluará que un valor sea igual a otro.

Pero como tenemos un operador de igual, también tenemos uno de diferente:

<?php
   $nombre = 'Fernando';
   if($nombre != 'Fernando'){ 
      echo 'Bienvenido anónimo.';
   }else{
      echo 'Bienvenido Fernando.';
   }
?>

En este último caso preguntamos por diferente, en lugar de igual. Si el nombre no es ‘Fernando’ la condición se cumplirá, de lo contrario saldrá por el otro lado.

Operadores Idéntico y No idéntico

Ambos ejemplos igual o diferente también se aplican para los números, sin embargo, tener en cuenta que para PHP:

<?php
   $numero = '7';
?>

Es igual a:

<?php
   $numero = 7;
?>

Por tanto si preguntamos:

<?php
   $numero1 = '7';
   $numero2 = 7;
   if($numero1 == $numero2){
      echo 'Los numeros son iguales';
   }else{
      echo 'Los numeros NO son iguales';
   }
?>

En este caso, la condición se cumple ya que ambos son 7, a pesar de que las variables son de tipos de datos diferentes.

Pero si en cambio queremos evaluar que los valores sean igual y además también lo sean los tipos de datos, debemos usar el operador idéntico, mediante el triple igual (===):

<?php
   $numero1 = '7';
   $numero2 = 7;
   if($numero1 === $numero2){
      echo 'Los números y tipos son iguales';
   }else{
      echo 'Los números NO son iguales';
   }
?>

O bien, usar el operador de no idéntico:

<?php
   $numero1 = '7';
   $numero2 = 7;
   if($numero1 !== $numero2){
      echo 'Los números y tipos NO son iguales';
   }else{ 
      echo 'Los números y tipos NO son iguales';
   }
?>

Operadores mayor o menor 

Así como podemos comparar que un número sea igual a otro, también podemos avaluar que un valor sea mayor, menor, mayor igual o menor igual:

  • ($valor1 < $valor2)  Menor que
  • ($valor1 > $valor2)  Mayor que
  • ($valor1 <= $valor2)  Menor igual que
  • ($valor1 >= $valor2)  Mayor igual que

Por ejemplo podríamos verificar si la persona tiene edad para ver la película, como en el ejemplo del principio:

<?php
   $edad = 17;
   if($edad >= 16){
      echo 'Usted puede ver la película';
   }else{
      echo 'Usted NO puede ver la película';
   } 
?>

En el ejemplo preguntamos si la edad es mayor o igual a 16, entonces la persona puede ver la película, como es 17 el valor se cumple la condición.

else if

Los if no sólo pueden evaluar si se cumple una condición, pueden hacerse con dos, tres, cuatro o las que fueran necesarias. Por ejemplo, si tuviésemos un número y tuviésemos que evaluar si el mismo es positivo, negativo o cero, tendríamos que preguntar primero si el número es mayor a 0, osea positivo; luego si es menor a 0, negativo; y si ninguna de las condiciones se cumple es porque el número, claro está, es 0. Para eso deberíamos hacer lo siguiente:

<?php
   $numero = -10;
   if($numero > 0){
      echo 'El número es positivo.';
   }else if($numero < 0){
      echo 'El número es negativo.';
   }else{
      echo 'El número es cero.';
   }
?>

En este caso no se cumple la primer condición, el número no es positivo, pero sí se cumple la segunda, éste es negativo.

Switch

Muchas veces debemos evaluar el valor de algo ante varias posibilidades, por ejemplo el típico disquito molesto que muchos odiamos cuando llamamos a un lugar y nos da varias opciones para marcar con nuestro teléfono. Si tuviésemos que usar un if, deberíamos hacer algo como esto:

<?php
   $numero = 3;
   if($numero == 1){
       echo 'Transferido a servicio técnico';
   }else if($numero == 2){
      echo 'Transferido a ventas';
   }else if($numero == 3){
      echo 'Transferido a consultas';
   }else if($numero == 4){
      echo 'Transferido a reclamos';
   }else{
      echo 'El código ingresado es incorrecto';
   }
?>

En este caso en las distintas condiciones siempre preguntamos por el valor de la variable $numero, si es igual a 1, 2, 3, 4 o si no es ninguna de estas.

Una forma más amigable de evaluar varias posibilidades con el mismo dato es a través del switch. Podríamos reemplazar esto último por esto:

<?php
   $numero = 3;
   switch ($numero) {
      case 1:
         echo 'Transferido a servicio técnico';
         break;
      case 2:
         echo 'Transferido a ventas';
         break;
      case 3:
         echo 'Transferido a consultas';
         break;
      case 4:
         echo 'Transferido a reclamos';
         break;
      default:
         echo 'El código ingresado es incorrecto';
   }
?>

Switch evaluará el valor de algo específico, en este caso la variable $numero. Luego debemos ingresar a través de la palabra reservada case qué debe hacerse dependiendo del valor, en cuanto a la palabra break permite finalizar el condicional para no seguir preguntando por los case que se encuentren debajo.

Anterior: Aprendiendo PHP, parte 7: Constantes

Siguiente: Aprendiendo PHP, parte 9: Bucles