Verbos Metodos en Ruby
Nov 20

La estructura If nos permite ejecutar bloques de codigo de forma condicional,

<?php
   if( condicion )
      //codigo a ejecutar
?>

Si la condicion es evaluada como verdadero entonces el bloque de codigo es ejecutado, de caso contrario simplemente se salta el bloque y continua con la ejecucion del script, veamos un ejemplo concreto:

<?php
   $numero = 18;
   if( $numero > 10 )
      echo 'Mi numero es mayor a 10';
?>
Mi numero es mayor a 10

En este caso la condicion es verdadera pues 18 es mayor que 10 y por tanto el ‘echo’ ejecutado. Tambien podriamos entregar un mensaje distinto si el valor es menor a 10 y otro si es exactamente 10, para esto usamos elseif y else.

<?php
   $numero = 8;
   if( $numero > 10 )
      echo 'Mi numero es mayor a 10';
   elseif( $numero < 10 )
      echo 'Mi numero es menor a 10';
   else
      echo 'Mi numero es igual a 10';
?>
Mi numero es menor a 10

En este caso la primera condicion del if evalua si el numero es mayor a 10, al no serlo pasa al ‘elseif’ que evalua una nueva condicion. Es posible usar tantos elseif como consideremos necesario. El ‘else’ se ejecutara solo si todas las condiciones anteriores no se cumplen. Veamos otro ejemplo:

<?php
   $nombre = 'Pedro';
   if( $nombre == 'Jose' )
      echo 'Que tal Jose!';
   elseif( $nombre == 'Diego' )
      echo 'Tanto tiempo Diego!';
   elseif( $nombre == 'Juan' )
      echo 'Como te va Juan?';
   else
      echo 'Lo siento, no te conozco';
?>
Lo siento, no te conozco

En este caso comparo el valor de la variable $nombre con distintos nombres, al no cumplirse ninguna de las condiciones se ejecuta el bloque de codigo bajo el else. Fijense que para comparar dos valores utilizo ==, si utilizo uno solo estaria asignando, por ejemplo:

<?php
   $color = 'azul';
   if( $color = 'rojo' )
      echo 'A mi tambien me gusta el color rojo!';
   else
      echo 'No me gusta ese color';
?>
A mi tambien me gusta el color rojo!

Uno esperaria que la condicion del if fuera falsa y por tanto mostrara el mensaje bajo el ‘else’, sin embargo, utilize = en vez de == por lo que en realidad no compare sino asigne ‘rojo’ a la variable $color.
Avancemos un poco mas, hasta ahora todos los bloques de codigo han sido de solo una linea, que sucede si bajo determinada condicion quiero ejecutar mas lineas de codigo, veamos que sucede en el siguiente ejemplo:

<?php
   $valor = 5;
   if( $valor == 8 )
      echo 'Dentro del if';
      echo 'Fuera del if';
?>
Fuera del if

Si bien la condicion no se cumple, la linea ‘Fuera del if’ es mostrada, por que?, justamente porque esta fuera del If, al no usar ningun tipo de parentesis para marcar cual es el bloque que corresponde al if solo la primera linea es considerada. Si quiero entonces las dos lineas dentro del if debo hacerlo de la siguiente forma:

<?php
   $valor = 5;
   if( $valor == 8 ) {
      echo 'Dentro del if';
      echo 'Tambien dentro del if';
   }
   echo 'Fuera del if';
?>
Fuera del if

El uso de parentesis tambien es necesario en elseif y else cuando el bloque de codigo a ejecutar es de mas de una linea, por ejemplo:

En resumen, si el bloque de codigo bajo un if, elseif o else es de mas de una linea es necesario usar parentesis, si es de solo una linea los parentesis son opcionales. De esta forma los siguientes ejemplos son validos.

<?php
   // Sin parentesis, se puede pues es una linea
   if( condicion )
      echo 'La condicion se cumple';
   else
      echo 'No se cumplio';
?>
<?php
   // Con parentesis ya sea para una linea o varias
   if( condicion ){
      echo 'La condicion se cumple';   
   } else {
      echo 'No se cumplio';
   }
?>
<?php
   // Otra forma de acomodar los parentesis
   if( condicion )
   {
      echo 'La condicion se cumple';
   }
   else
   {
      echo 'No se cumplio';
   }
?>
<?php
   // Escribir en la misma linea
   if( condicion ) echo 'La condicion se cumple';
   else echo 'No se cumplio';
?>
<?php
   // En la misma linea con parentesis
   if( condicion ) { echo 'La condicion se cumple'; }
   else { echo 'No se cumplio'; }
?>
<?php
   // Combinado
   if( condicion )   echo 'La condicion se cumple';
   else {
      echo 'No se cumple';
   }
?>

Ustedes decidiran que forma les acomoda mas.

Una cosa mas a mencionar antes de terminar la entrada, es la sintaxis alternativa usando dos puntos. Con esta sintaxis no es necesario el uso de parentesis aunque el bloque tenga mas de una linea, pero si es necesario escribir ‘endif’ para cerrar la escructura if.

<?php
   $hora = 21;
   if( $hora < 12 ):
      echo 'Buenos dias';
   elseif( $hora < 20 ):
      echo 'Buenas tardes';
   else:
      echo 'Buenas noches';
   endif;  
?>
Buenas noches

El resto es similar, por ejemplo puedo escribir el codigo a ejecutar justo despues de los dos puntos,

<?php
   $hora = 21;
   if( $hora > 12 ): echo 'Es mas de mediodia';
   endif;
?>
Es mas de mediodia

Aqui termina esta entrada, bye.


2 comentarios para “Uso de if, elseif y else en PHP”

  1. 1. yummta dijo:

    Una explicación completa y muy clara. Gracias. Continua publicando más sobre php por favor.

  2. 2. r4ito dijo:

    Gracias yummta, habia pensado remover las entradas de php y dedicarme solo a “ruby” agregando “ruby on rails” pero lo reconsiderare.

    Saludos.

Dejar un comentario